2010-12-01 51 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