正如 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ī)表示式」
。
您可以建構(gòu)一個新的 RegExp 物件:
var replace = "regex\d"; var re = new RegExp(replace,"g");
您可以透過這種方式動態(tài)建立正規(guī)表示式物件。然後你會做:
"mystring1".replace(re, "newstring");