2010-12-01 31 views
1
替換字符串的
hidValue="javaScript:java"; 
replaceStr = "java"; 
resultStr=hidValue.replace("/\b"+replaceStr+"\b/gi",""); 

resultStr仍包含 「JavaScript的:java的」精確的Javascript

上面的代碼是不更換確切字符串的Java。但是,當我改變代碼,並直接傳遞值的Java「這是越來越更換正確的,即

hidValue="javaScript:java"; 
resultStr=hidValue.replace(/\bjava\b/gi,""); 

resultStr包含「JavaScript的:」

所以,我應該如何傳遞變量替換功能,使得只有完全匹配被替換。

回答

3

替換功能並不需要一個字符串作爲第一個參數而不是RegExp對象。你不可以混合這兩個。要創建一個RexExp對象進行組合的字符串,使用適當的構造函數:

resultStr=hidValue.replace(new RegExp("\\b"+replaceStr+"\\b","gi"),""); 

注意雙反斜線:你想在你的正則表達式的反斜槓,但一個反斜槓在字符串中也作爲轉義字符,所以你必須加倍。

3

請注意,在一種情況下,您傳遞的是正則表達式字面值/\bjava\b/gi,而另一個傳遞字符串"/\bjava\b/gi"。當使用字符串作爲模式時,String.replace將查找字符串,它不會將該模式視爲正則表達式。

如果需要使用變量,使正則表達式,做它像這樣:

new RegExp("\\b" + replaceStr + "\\b", "gi") 

參見:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace