如何查找 Html 标签中包含的单词?

发布于 2024-08-23 05:00:35 字数 403 浏览 4 评论 0 原文

我正在用 Javascript 结合 OpenOffice 字典编写一个拼写检查器,但遇到了一个严重的问题。

我可以使用 RegEx 找到整个单词,但如果单词看起来像 programing,如果我使用 .text( 删除所有 html 标签,我就可以找到它) 来自 jQuery 的方法。但如何替换这个单词并重建原来的html结构呢?

Spellchecker.com 做得非常聪明 - 拼写检查甚至可以识别像 proging 如果拼写错误!

I'm programming a spell checker in Javascript in combination with OpenOffice dictionary, and I have a serious problem.

I can find whole words using RegEx, but if the word looks like prog<b>ram</b>ing, I can find it if I remove all html tags with the .text() method from jQuery. But how can I replace this word and rebuild the original html structure?

Spellchecker.com does it very smartly - the spell check recognizes even words like prog<b>ram</b>ing if they are misspelled!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

滥情稳全场 2024-08-30 05:00:36

我会使用一些东西来提取任何 HTML,以便您处理纯文本。我不能谈论 javascript 中的任何类似工具,但我确信它们存在。如果您可以找到一些东西来从 .text() 中“擦除”html,您可以通过这种方式运行搜索。

尝试这样的事情: http://metacpan.org/pod/HTML::Scrubber

I would use something to pull out any HTML so that you are dealing with plaintext. I cannot speak for any tools like this in javascript but I'm sure they exists. If you can find something to 'scrub' the html out of your .text() you can run a search this way.

Try something like this: http://metacpan.org/pod/HTML::Scrubber

微暖i 2024-08-30 05:00:35
/([\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(/(<[^>]+>)/, '');
}
/([\s>"'])prog(<[^>]+>)ram(<[^>]+>)ing([\s\.,:;"'<])/g 

will match your example

So roughly the following regex will find all instances of the word, even those broken with html

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

God knows how that'll help you build a spellchecker though. I suspect the approach used in spellcheckers would be more like 'do a spellcheck assuming no html, and if there is html in a word then strip it out using something like the method below, and do a spellcheck as normal for the string you get:

String.prototype.stripHtml = function() {
  return this.replace(/(<[^>]+>)/, '');
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文