var str="Foo bar bar end."
var word="bar"
var regex = new RegExp("([\\s]|^|>)("+word+")(<|[\\s]|$)", "gi");
str=str.replace(regex,' <span class="selected">$2</span> ');
结果:
Foo <span class="selected">bar</span> bar end.
为什么只有第一个bar
发生变化?
答案 0 :(得分:2)
由于重叠匹配。即,您的上一个捕获组使用尾随分隔符。为了不使用以下字符,将最后一个捕获组更改为正向前瞻模式,该模式不会消耗任何字符但会执行断言。
body