如何找到被HTML标签包含的单词?

3
我正在使用Javascript和OpenOffice字典编写拼写检查器,但遇到了一个严重的问题。
我可以使用正则表达式找到整个单词,但如果这个单词看起来像prog<b>ram</b>ing,我需要使用jQuery的.text()方法删除所有html标签才能找到它。但是,如何替换这个单词并重建原始的html结构呢? Spellchecker.com非常聪明地解决了这个问题 - 即使单词被错误拼写,拼写检查也能识别出类似prog<b>ram</b>ing的单词!

1
关于使用正则表达式处理HTML,我建议找另一种方法:https://dev59.com/X3I-5IYBdhLWcg3wq6do#1732454 - Olly Hodgson
2个回答

2
/([\s>"'])prog(<[^>]+>)ram(<[^>]+>)ing([\s\.,:;"'<])/g 

将匹配您的示例

因此,以下正则表达式大致可以找到单词的所有实例,即使这些实例被HTML打断。

 var regExp = new RegExp('([\s>"\'])' + word.split('').join('(<[^>]+>)') + '([\s\.,:;"\'<])',g);

上帝知道这是否有助于您构建拼写检查器。我怀疑拼写检查器使用的方法更像是“进行拼写检查,假设没有HTML,并且如果单词中有HTML,则使用以下方法将其删除,并为您获得的字符串正常进行拼写检查:
String.prototype.stripHtml = function() {
  return this.replace(/(<[^>]+>)/, '');
}

0
我会使用一些工具来提取任何HTML,以便您处理纯文本。我无法确定JavaScript中是否有此类工具,但我相信它们存在。如果您可以找到一些方法来“清除” .text() 中的HTML,那么您可以通过这种方式运行搜索。
尝试使用类似于这样的工具:http://metacpan.org/pod/HTML::Scrubber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接