我正在尝试用 HTML 标签包装一些单词,因为我正在使用正则表达式。我快到了:
这是我的正则表达式
/((apple|banana|cherry|orange)\b\s?)+/gi
这是我的替代品:
<em>$&</em>
这非常适合我的示例文本:
Apple Banana apple cherry, Cherry orange and Oranges Apple, Banana
结果是:
<em>Apple Banana apple cherry</em>, <em>Cherry orange </em>and Oranges <em>Apple</em>, <em>Banana</em>
我可以很务实地接受这个,但我真的很想让它完美,不包括最后一场比赛后的空间。
即我的完美结果是(看到标签在“Cherry orange”之后向左移动):
<em>Apple Banana apple cherry</em>, <em>Cherry orange</em> and Oranges <em>Apple</em>, <em>Banana</em>
最佳答案
JavaScript 不支持后视。真遗憾,我们本可以这样做:
// doesn't work in JavaScript:
/((apple|banana|cherry|orange)\b\s?)+(?<!\s)/gi
然而,我们可以做的是将空白移到开头,并添加一个否定的先行(因此 catch 不能以空白开始):
/(?!\s)(\s?\b(apple|banana|cherry|orange)\b)+/gi
与您的代码略有不同的是,我还在模式的开头添加了 \b
,因此它不会从 Snapple< 捕获
.apple
/
关于javascript - 如何用标签包裹一组单词,JavaScript Replace Regular Expressions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1814608/