Gopi
Gopi

Reputation: 5887

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 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.

Upvotes: 1

Views: 6360

Answers (3)

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

show 5093240556XXX`

Upvotes: 0

deceze
deceze

Reputation: 522412

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

Upvotes: 3

Simon
Simon

Reputation: 3539

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.

Upvotes: 5

Related Questions