javascript - 如何用标签包裹一组单词,JavaScript Replace Regular Expressions

标签 javascript regex replace

我正在尝试用 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/

相关文章:

python - 将 Python 正则表达式转换为 VisualBasic

java - 字符串解析不适用于 Java 中的正则表达式

javascript - AngularJS - 选择的 ng-model 无法正常工作

javascript - jQuery,对象没有方法 'innerHtml'

python - 使用区分大小写和不区分大小写的混合模式的正则表达式查找文本中使用的人称代词的数量

java - Matcher.find (int start) 不在某个区域内工作

python - 将单引号替换为双引号 python pandas 数据框

sql - 使用 XMLELEMENT Oracle 时如何替换 ' 或任何特殊字符

php - 当客户端禁用 Javascript 时,有没有办法从 PHP 执行外部 Javascript?

javascript - 用另一个 Div 中的文本替换 Div 中的文本