我们有一个轮播,每张幻灯片上都有一些标题,还有一个函数,它检查每个标题中的字母LUMAX,这些字母用H4标记 Package ,然后用SPAN标记 Package 。
const arr = ['l','u','m','a','x'];
const re = new RegExp(`\\b${arr.join("|")}\\b`,"gi");
$("h4").html((_,text) => text.replace(re,match => `<span>${match}</span>`));
我认为这是正确的工作,但仔细检查,它并不适用于所有字符。例如-在第一张幻灯片上一切都很好,但在第二张幻灯片的标题如下:<h4>Love has no labels</h4>
由于某种原因,它输出如下
<h4><span>L</span>ove h<span>a</span>s no <span>l</span><span>a</span>bels</h4>
正如您所看到的,第一个和第二个“L”被包含在SPAN标记中,但是字母L的第三个示例却没有。
我试着用vanilla Javascript重写函数,但也不起作用。
1条答案
按热度按时间6yoyoihd1#
从正则表达式中删除边界
\b
,一切都很好。示例: