简体   繁体   中英

Exact replace of string in Javascript

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 replaced correctly ie

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.

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

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.

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

show 5093240556XXX`

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM