我想在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>)
这涉及结束,但不是初始。这可能对我的目的很好,但它似乎并不理想。我很欣赏任何改进正则表达式的帮助。
答案 0 :(得分:4)
您可以使用负面后卫来获得开场<a href=...
:
var tmpStr = new RegExp('(?<!<a.*?>)match text(?!</a>)');
希望对你有用。
答案 1 :(得分:3)
感谢您提供快速而有用的答案。只是为了澄清,我最终使用的正则表达式是
(?!<a.*?>)\bmatch text\b(?!</a>)