Javascript 中字符串的精确替换

Gop*_*opi 1 javascript string replace exact-match

hidValue="javaScript:java";
replaceStr = "java";
resultStr=hidValue.replace("/\b"+replaceStr+"\b/gi","");
Run Code Online (Sandbox Code Playgroud)

resultStr 仍然包含“javaScript:java”

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

hidValue="javaScript:java";
resultStr=hidValue.replace(/\bjava\b/gi,"");
Run Code Online (Sandbox Code Playgroud)

resultStr 包含“javaScript:”

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

Sim*_*mon 5

替换函数不采用字符串作为第一个参数,而是采用 RegExp 对象。你不能把这两者混为一谈。要从组合字符串创建 RexExp 对象,请使用适当的构造函数:

resultStr=hidValue.replace(new RegExp("\\b"+replaceStr+"\\b","gi"),"");
Run Code Online (Sandbox Code Playgroud)

请注意双反斜杠:您希望在正则表达式中使用反斜杠,但反斜杠也充当字符串中的转义字符,因此您必须将其加倍。