Javascript .replace() not working

2020-04-02 08:38发布

问题:

carList = cars.innerHTML;
alert(carList);
carList = carList.replace("<center>","").replace("</center>","").replace("<b>","").replace("</b>","");
alert(carList);

Why in the world is this happening? I've tried splitting this out into individual string.replace()'s and that gives the same result.

回答1:

Using .replace() with a string will only fix the first occurrence which is what you are seeing. If you do it with a regular expression instead you can specify that it should be global (by specifying it with a g afterwards) and thus take all occurrences.

carList = "<center>blabla</center> <b>some bold stuff</b> <b>some other bold stuff</b>";
alert(carList);
carList = carList.replace(/<center>/g,"").replace(/<\/center>/g,"").replace(/<b>/g,"").replace(/<\/b>/g,"");
alert(carList);

See this fiddle for a working sample.



回答2:

You can use a regular expression to match all of these at the same time:

carList = carList.replace(/<\/?(b|center)>/g,"");

The g flag at the end of the match string tells Javascript to replace all occurrences, not just the first one.