Comment utiliser des variables dans les expressions régulières ?
P粉763748806
P粉763748806 2023-08-23 15:12:16
0
2
594
<p>Je souhaite créer une méthode <code>String.replaceAll()</code> en JavaScript et je pense que l'utilisation d'expressions régulières est le moyen le plus propre. Cependant, je ne sais pas comment transmettre des variables à l'expression régulière. Je peux déjà le faire, en remplaçant toutes les instances de <code>"B"</code> par <code>"A"</code>. </p> <pre class="brush:php;toolbar:false;">"ABABAB".replace(/B/g, "A");</pre> <p>Mais je veux faire quelque chose comme ceci : </p> <pre class="brush:php;toolbar:false;">String.prototype.replaceAll = function(replaceThis, withThis) { this.replace(/replaceThis/g, withThis); };</pré> <p>Mais apparemment, cela ne remplacera que le texte <code>"replaceThis"</code>... Alors, comment puis-je transmettre cette variable dans ma chaîne regex ? </p>
P粉763748806
P粉763748806

répondre à tous(2)
P粉141455512

Comme Eric Wendelin l'a mentionné, vous pouvez faire ceci :

str1 = "pattern"
var re = new RegExp(str1, "g");
"pattern matching .".replace(re, "regex");

Cela produira “正则表达式匹配。”。但是,如果 str1 是 ".",则会失败。您期望结果为“模式匹配正则表达式”,用“正则表达式”替换句点, mais le résultat sera...

regexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregex

En effet, bien que "." soit une chaîne, dans le constructeur RegExp, elle est toujours interprétée comme une expression régulière, représentant tout caractère autre qu'une nouvelle ligne, représentant chaque caractère de la chaîne. A cet effet, les fonctions suivantes peuvent être utiles :

RegExp.quote = function(str) {
     return str.replace(/([.?*+^$[\]\(){}|-])/g, "\");
 };

Ensuite, vous pouvez faire ceci :

str1 = "."
var re = new RegExp(RegExp.quote(str1), "g");
"pattern matching .".replace(re, "regex");

produit“模式匹配正则表达式”.

P粉318928159

Vous pouvez construire un nouvel objet RegExp :

var replace = "regex\d";
var re = new RegExp(replace,"g");

Vous pouvez créer des objets d'expression régulière de manière dynamique de cette façon. Ensuite vous ferez :

"mystring1".replace(re, "newstring");
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!