0

我在 jQuery 中对随机 HTML 页面执行简单的文本搜索/替换,但我在忽略出现在属性中的术语时遇到问题,即如果我的术语是jquery,我想忽略所有术语,<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> jquery 同时仍然点击外部. 现在我的代码看起来有点像这样:

$("div#content").html($("div#content").text().replace(/(jquery)/g, "stuff"));

我一直在看正面/负面的前瞻/后视,但我无法正确理解。除了 jQuery,我无法使用任何外部库,而且我已经看过这篇文章

我想一种解决方案可能是使用一些 indexOf 魔法来搜索我想要的部分,但我不知道这对于快速文本搜索是否有效或可行。

任何建议将不胜感激!

4

3 回答 3

1

除非该术语以其他方式出现在属性中,否则(?<=[^\/])jquery搜索所有jquery前面没有...的内容怎么样?/jquery

http://regexr.com?30o8n

于 2012-04-24T01:13:47.817 回答
1

这是使用手动编码解析器的好例子。这几乎是唯一可以让您可靠地处理您想要处理的所有案例的方法。

基本上,将解析器视为状态机。它需要一次读取一个字符,并根据该字符及其当前解析状态为每个字符执行适当的操作。该模型使得在处理其他所有内容时忽略 HTML 标记中出现的任何文本变得相对简单。

这是一个简单的示例,可以帮助您入门:http: //jsfiddle.net/8BeEv/

请注意,示例代码当前不处理 HTML 标记内的转义序列(例如,标记\>内的序列会破坏它)、格式错误的 HTML 或其他可能但通常很少见的错误情况。

于 2012-04-24T01:51:03.190 回答
0

刚刚偶然发现这一点,几乎可以通过仅查看文本节点来解决我之前遇到的问题: https ://stackoverflow.com/a/4515063/660036

我认为这个解决方案不会处理跨越多个文本节点的文本,即在

the <strong>qui</strong>ck brown fox

但是解决这些情况所需的复杂性比我现在需要的要高得多=P

于 2012-04-25T00:34:03.993 回答