开发者

Exact replace of string in Javascript

开发者 https://www.devze.com 2023-01-27 13:49 出处:网络
hidValue=\"javaScript:java\"; replaceStr = \"java\"; resultStr=hidValue.replace(\"/\\b\"+replaceStr+\"\\b/gi\",\"\");
hidValue="javaScript:java";
replaceStr = "java";
resultStr=hidValue.replace("/\b"+replaceStr+"\b/gi","");

resultStr still contains "javaScript:java"

The above code is not replacing the exact string java. But when I change the code and directly pass the value 'java' it's getting re开发者_C百科placed correctly i.e

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

resultStr contains "javaScript:"

So how should I pass a variable to replace function such that only the exact match is replaced.


The replace-function does not take a string as first argument but a RegExp-object. You may not mix those two up. To create a RexExp-object out of a combined string, use the appropriate constructor:

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

Note the double backslashes: You want a backslash in your Regular Expression, but a backslash also serves as escape character in the string, so you'll have to double it.


Notice that in one case you're passing a regular expression literal /\bjava\b/gi, and in the other you're passing a string "/\bjava\b/gi". When using a string as the pattern, String.replace will look for that string, it will not treat the pattern as a regular expression.

If you need to make a regular expression using variables, do it like so:

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

See:

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


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

show 5093240556XXX`

0

精彩评论

暂无评论...
验证码 换一张
取 消