Wie verwende ich Variablen in regulären Ausdrücken?
P粉763748806
2023-08-23 15:12:16
<p>Ich möchte eine <code>String.replaceAll()</code>-Methode in JavaScript erstellen und denke, dass die Verwendung regulärer Ausdrücke der sauberste Weg ist. Allerdings weiß ich nicht, wie man Variablen an den regulären Ausdruck übergibt. Ich kann dies bereits tun, indem ich alle Instanzen von <code>"B"</code> durch <code>"A"</code> ersetze. </p>
<pre class="brush:php;toolbar:false;">"ABABAB".replace(/B/g, "A");</pre>
<p>Aber ich möchte so etwas machen: </p>
<pre class="brush:php;toolbar:false;">String.prototype.replaceAll = function(replaceThis, withThis) {
this.replace(/replaceThis/g, withThis);
};</pre>
<p>Aber anscheinend ersetzt dies nur den Text <code>"replaceThis"</code>... Wie übergebe ich diese Variable also in meinen Regex-String? </p>
正如 Eric Wendelin 提到的,你可以这样做:
这会产生
“正则表达式匹配。”
。但是,如果 str1 是"."
,则会失败。您期望结果为“模式匹配正则表达式”
,用“正则表达式”替换句点
,但结果会是...这是因为,虽然
"."
是一个字符串,但在 RegExp 构造函数中它仍然被解释为正则表达式,表示任何非换行符,表示字符串中的每个字符。为此,以下函数可能有用:然后你可以这样做:
产生
“模式匹配正则表达式”
。您可以构造一个新的 RegExp 对象:
您可以通过这种方式动态创建正则表达式对象。然后你会做: