如何在正規表示式中使用變數?
P粉763748806
2023-08-23 15:12:16
<p>我想在 JavaScript 中建立一個 <code>String.replaceAll()</code> 方法,我認為使用正規表示式是最簡潔的方法。但是,我不知道如何將變數傳遞給正規表示式。我已經可以執行此操作,將 <code>"B"</code> 的所有實例替換為 <code>"A"</code>。 </p>
<pre class="brush:php;toolbar:false;">"ABABAB".replace(/B/g, "A");</pre>
<p>但我想做這樣的事情:</p>
<pre class="brush:php;toolbar:false;">String.prototype.replaceAll = function(replaceThis, withThis) {
this.replace(/replaceThis/g, withThis);
};</pre>
<p>但顯然這只會取代文字<code>「replaceThis」</code>...那麼我該如何將此變數傳遞到我的正規表示式字串中? </p>
正如 Eric Wendelin 所提到的,你可以這樣做:
這會產生
「正規表示式匹配。」
。但是,如果 str1 是"."
,則會失敗。您期望結果為「模式比對正規表示式」
,並用「正規表示式」取代句點
,但結果會是...這是因為,雖然
"."
是一個字串,但在RegExp 建構函數中它仍然被解釋為正則表達式,表示任何非換行符,表示字串中的每個字元。為此,以下函數可能有用:然後你可以這樣做:
產生
「模式比對正規表示式」
。您可以建構一個新的 RegExp 物件:
您可以透過這種方式動態建立正規表示式物件。然後你會做: