在Javascript中完全替换字符串

时间:2010-12-01 07:20:41

标签: javascript string replace exact-match

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

resultStr仍然包含“javaScript:java”

上面的代码并没有替换确切的字符串java。但是,当我更改代码并直接传递值'java'时,它正在被正确替换,即

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

resultStr包含“javaScript:”

那么我应该如何传递一个变量来替换函数,以便只替换完全匹配。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

replace-function不会将字符串作为第一个参数而是一个RegExp对象。你可能不会把那两个混在一起。要从组合字符串中创建RexExp对象,请使用适当的构造函数:

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

请注意双反斜杠:你需要在正则表达式中使用反斜杠,但反斜杠也可以作为字符串中的转义字符,因此你必须加倍它。

答案 2 :(得分:0)

`let msisdn ='5093240556699' let isdnWith = numb.msisdn.slice(8,11); 让msisdnNew = msisdn.replace(isdnWith,'XXX','gi');

显示5093240556XXX`