2010-02-22 103 views
3

我正在用Javascript和OpenOffice词典编写一个拼写检查器,我遇到了一个严重的问题。如何查找从Html标记中包含的单词?

我可以使用RegEx找到整个单词,但如果单词看起来像prog<b>ram</b>ing,我可以找到它,如果我从jQuery中使用.text()方法删除所有的html标签。但我怎样才能替换这个词并重建原始的html结构?

Spellchecker.com它非常巧妙 - 拼写检查可识别像拼写错误的文字,如prog<b>ram</b>ing

+1

参考使用正则表达式来处理HTML,我建议寻找另一种方式:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained标签都有效/ 1732454#1732454 – 2010-02-22 11:30:37

回答

0

我会用的东西拉出任何HTML,这样你正在处理明文。我不能说这样的任何工具在JavaScript中,但我相信他们存在。如果你可以找到某些东西来'清理'你的.text()中的html,你可以用这种方式进行搜索。

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

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(/(<[^>]+>)/, ''); 
} 
相关问题