【发布时间】:2020-01-03 15:56:02
【问题描述】:
我需要一些正则表达式方面的帮助。
我正在使用 Javascript 和 JQuery 来超链接 HTML 文档中的术语,为此我使用以下代码。我正在为一个庞大的文档中的多个术语这样做。
var searchterm = "Water";
jQuery('#content p').each(function() {
var content = jQuery(this),
txt = content.html(),
found = content.find(searchterm).length,
regex = new RegExp('(' + searchterm + ')(?![^(<a.*?>).]*?<\/a>)','gi');
if (found != -1) {
//hyperlink the search term
txt = txt.replace(regex, '<a href="/somelink">$1</a>');
content.html(txt);
}
});
然而,有一些我不想匹配的实例,由于时间限制和大脑融化,我正在寻求一些帮助。
编辑:我已经根据@ggorlen 提供的优秀示例更新了下面的代码笔,谢谢!
【问题讨论】:
-
如果您使用 HTML,为什么不直接搜索 DOM 或使用 HTML 解析器?
-
@ggorlen,请告诉我更多信息,我实际上正在使用高级自定义字段、PHP 和 Wordpress。我试图尽可能远离后端并创建一个简单的基于 javascript 的层。我也在努力提高效率,这是一个巨大的文档,我需要匹配很多术语。
-
@ctwheels - 我知道,我知道 :(
-
嗯,jQuery(以及 JS,就此而言)的全部意义在于它为您搜索和操作 DOM。如果你把它转储到
.html()并使用正则表达式,这就像买一辆自行车和carrying it instead of riding it。
标签: javascript jquery regex