正则表达式匹配未链接的特定文本

时间:2010-02-10 00:54:18

标签: javascript html regex

我想在javascript中编写一个正则表达式来匹配特定的文本,只有当它不是html链接的一部分时,即

match <a href="/link/page1">match text</a>

不匹配,但

match text

<p>match text</p>

会匹配。

(每次搜索运行时,“匹配文字”都会改变 - 我将使用类似

的内容
var tmpStr = new RegExp("\bmatch text\b","g");

从数据库中读取“匹配文本”的值。)

到目前为止,我在正则表达式上的最大努力是

\bmatch text\b(?!</a>)

这涉及结束,但不是初始。这可能对我的目的很好,但它似乎并不理想。我很欣赏任何改进正则表达式的帮助。

2 个答案:

答案 0 :(得分:4)

您可以使用负面后卫来获得开场<a href=...

var tmpStr = new RegExp('(?<!<a.*?>)match text(?!</a>)');

希望对你有用。

答案 1 :(得分:3)

感谢您提供快速而有用的答案。只是为了澄清,我最终使用的正则表达式是

(?!<a.*?>)\bmatch text\b(?!</a>)