J'ai essayé de placer un modèle littéral à l'intérieur d'un RegEx, et cela n'a pas fonctionné. J'ai ensuite créé une variable regex
qui contient mon RegEx, mais elle ne me donne toujours pas le résultat souhaité.
Cependant, si je console.log(regex)
individuellement, je reçois le RegEx souhaité, tel que /.+?(?=location)/i
, /.+?(?=date)/i
et ainsi de suite, mais une fois que je place regex
à l'intérieur de .replace
il semble ne pas fonctionner
function validate (data) {
let testArr = Object.keys(data);
errorMessages.forEach((elem, i) => {
const regex = `/.+?(?=${elem.value})/i`;
const a = testArr[i].replace(regex, '');
})
}
Votre variable regex
est une chaîne . Pour en faire un RegExp, utilisez
const regex = new RegExp(`.+?(?=${elemvalue.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')})`, "i");
En outre, c'est une bonne idée de échapper la variable faire partie de l'expression régulière afin que tous les métacaractères spéciaux d'expression régulière soient traités comme des littéraux.
const s = "final (location)";
const elemvalue = "(location)";
const regex = new RegExp(`.+?(?=${elemvalue.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')})`, "i");
// console.log(regex); // /.+?(?=\(location\))/i
// console.log(typeof(regex)); // object
let a = s.replace(regex, '');
console.log(a);