国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

如何在正規(guī)表示式中使用變數(shù)?
P粉763748806
P粉763748806 2023-08-23 15:12:16
0
2
747
<p>我想在 JavaScript 中建立一個 <code>String.replaceAll()</code> 方法,我認為使用正規(guī)表示式是最簡潔的方法。但是,我不知道如何將變數(shù)傳遞給正規(guī)表示式。我已經(jīng)可以執(zhí)行此操作,將 <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>...那麼我該如何將此變數(shù)傳遞到我的正規(guī)表示式字串中? </p>
P粉763748806
P粉763748806

全部回覆(2)
P粉141455512

正如 Eric Wendelin 所提到的,你可以這樣做:

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

這會產(chǎn)生「正規(guī)表示式匹配?!?/code>。但是,如果 str1 是 ".",則會失敗。您期望結(jié)果為「模式比對正規(guī)表示式」,並用「正規(guī)表示式」取代句點,但結(jié)果會是...

regexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregex

這是因為,雖然"." 是一個字串,但在RegExp 建構(gòu)函數(shù)中它仍然被解釋為正則表達式,表示任何非換行符,表示字串中的每個字元。為此,以下函數(shù)可能有用:

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

然後你可以這樣做:

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

產(chǎn)生「模式比對正規(guī)表示式」。

P粉318928159

您可以建構(gòu)一個新的 RegExp 物件:

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

您可以透過這種方式動態(tài)建立正規(guī)表示式物件。然後你會做:

"mystring1".replace(re, "newstring");
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板