首页 > 解决方案 > 正则表达式:如何在忽略 HTML 标签的情况下获取 HTML 字符串中的最后一个单词?

问题描述

我在 Javascript 中有以下代码:

html.replace(/(\S+)\s*$/, '<span class="highlight-word">$1</span>');

我想突出显示 HTML 字符串中的最后一个单词;但是,如果最后有一个 HTML 标记,该标记将用“highlight-word”跨度包装。

例如:

This is a test <br> <b> hello there </b>

会变成:

This is a test <br> <b> hello there <span class="highlight-word"></b></span>

我怎样才能更正上面的正则表达式,这样结果会是这样的:

This is a test <br> <b> hello <span class="highlight-word">there</span> </b>

标签: javascriptregex

解决方案


简单而优雅的解决方案是用以下模式替换您的 RegEx 并向前看。

(\w*)(?=\W*\<\/.*\>$)

此模式仅匹配任何标签关闭之前的最后一个单词。


推荐阅读