连续重复的单词以使用正则表达式进行更改

Consecutive duplicate words to change with regex

本文关键字:正则表达式 单词 连续      更新时间:2023-09-26
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改变?

因为匹配

重叠。 即,最后一个捕获组使用尾随分隔符。为了使其不消耗以下字符,请将最后一个捕获组更改为积极的前瞻模式,该模式不会消耗任何字符,但会执行断言。

var regex = new RegExp("([''s>]|^)("+word+")(?=[<''s]|$)", "gi");
str=str.replace(regex,'$1<span class="selected">$2</span>');