【问题标题】:Javascript regex, wont match words next to html tagJavascript正则表达式,不会匹配html标签旁边的单词
【发布时间】:2012-01-03 01:07:35
【问题描述】:

我在 contenteditable div 上使用 jquery 拼写检查插件,它会在返回时插入 div 和 brs。拼写检查器的正则表达式不会匹配标签旁边拼写错误的单词。这是我正在执行正则表达式的 div 的内容:

Praesent commodo cursus magna,
<br>
<br>
dsf
<br>
vel scelerisque nisl consectetur et.

这是一个循环的 javascript,'replaceWord' 是一个拼写错误的单词:

var re = new RegExp('(^|[^a-zA-Z])(' + replaceWord + ')([^a-zA-Z]|$)', 'g');
html = html.replace(re, '$1<span class="spellcheck-word-highlight">$2</span>$3');

不过,正则表达式正确匹配所有其他单词。 有什么想法吗?

谢谢!

【问题讨论】:

  • 你能放一个jsfiddle 演示吗?
  • 您的示例中哪个单词拼写错误?我尝试替换“dsf”和“vel” - 正则表达式工作正常。
  • 仅供参考,“\b”标记匹配单词的“边界”...
  • replaceWord 是否可能包含在正则表达式中具有特殊含义的字符? “不过,正则表达式正确匹配所有其他单词”是什么意思?
  • 我不明白为什么您的拼写检查器涉及 HTML 标记...?

标签: javascript regex spell-checking pspell


【解决方案1】:

我会尝试:

var re = new RegExp('\\b(' + replaceWord + ')\\b', 'g');

相反。 "\b" 限定符(在上面的字符串中加倍的反斜杠)匹配从非单词字符(或文本开头)到单词字符,以及从单词字符到非单词字符(或文本结尾)的转换。

【讨论】:

    猜你喜欢
    • 2014-08-29
    • 2011-09-20
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多