开发者

Regex to replace first occurence of match in javascript

开发者 https://www.devze.com 2023-01-07 11:10 出处:网络
I have below test cases as input: [This is my test] [This is my test] My name is xyz. Want Expected output as :

I have below test cases as input:

  1. [This is my test] [This is my test] My name is xyz.

    Want Expected output as :

    [This is my test] My name is xyz.

    .

  2. [This is my test] My name is xyz.

    Want Expected output as:

    My name is xyz.

For above test cases I want to replace only first occurrence of '[This is my test] ' with blank. I don't want to replace second occurrence of match.

How do I resolve this using regex in JavaScript?

Thanks in advance.

ETA:

I just want to give more clarification that, i dont want to use hard coded value in regex , i want to use variable in regex.

Assume that [Thi开发者_如何学Pythons is my test] is stored in one variable i.e. var defaultMsg = "[This is my test] ";


Anyone try this?

<script>
var defaultMsg ="[This is my test]"
var str         = "[This is my test] [This is my test] My name is xyz.";
str=str.replace(defaultMsg,"");
alert(str);
</script>

No need for regexp and replace does not care about special chars if the source string is not a regular expression object but just a string. Tested Mozilla 1.7, FF3.6.6, Safari 5, Opera 10 and IE8 windows XP sp3. Not sure I understand why this was voted down if it does the job with a minimum of fuss.

to replace all occurrences, add a g (note: this is not standard):

str=str.replace(defaultMsg,"","g"); // "gi" for case insensitivity 

replace MDN


If the search pattern is in a string variable and can contain special characters, then it must be escaped. Like so:

var defaultMsg  = "[This is my test] ";

//-- Must escape special characters to use in a RegEx.
defaultMsg      = defaultMsg.replace (/([\!\$\(\)\*\+\.\/\:\=\?\[\\\]\^\{\|\}])/g, "\\$1")

var zRegEx      = new RegExp (defaultMsg, '');

var Str         = '[This is my test] [This is my test] My name is xyz.';

Str             = Str.replace(zRegEx, "");

console.log (Str);  //-- Or use alert()


Sure. Use replace():

var s = "[This is my test] [This is my test] My name is xyz.";
alert(s.replace(/\[This is my test\] /, ''));

If you want to replace all occurrences:

alert(s.replace(/\[This is my test\] /g, ''));


This will do what you want:

str= '[This is my test] [This is my test] My name is xyz.';

str = str.replace(/\[This is my test\]/,"");

To replace all occurences of '[This is my test]' you need to call:

str = str.replace(/\[This is my test\]/g,"");


The JavaScript replace function defaults to non-global so it only replaces the first match:

var foo = '[This is my test] [This is my test] My name is xyz.';
var bar = foo.replace(/\[This is my test\]\s/, '');

If you wanted to replace all occurrences of the string then make the regex global by appending a g:

var bar = foo.replace(/\[This is my test\]\s/g, '');


var str="[This is my test] [This is my test] My name is xyz.?";
var patt1=(/[[This is my test]].*My name is xyz/i);
document.write(str.match(patt1));


var originalText = '[This is my test] [This is my test] My name is xyz.';
var defaultMsg = "[This is my test] ";

alert( originalText.replace( defaultMsg , '' ) );


This will do the trick:

var foo = '[This is my test] ';// or whatever you want
foo = foo.replace(/([\[\]])/, '\\$1', 'g'); // add all special chars you want
var patern = new RegExp(foo);
var myString = '[This is my test] [This is my test] My name is xyz.';
var result = myString.replace(patern, '');
0

精彩评论

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