正则表达式只有空格的Word边界

时间:2016-03-15 01:43:37

标签: javascript regex

我的new RegExp("(\\b" + var + "\\b)")的正则表达式有问题。我遇到的问题是,如果我的文本中有一个span元素并且我正在替换 word span,它会将span元素替换为。我认识到“&lt;”的问题计为“单词边界”,以便找到<**span**>但我不想要它。那么正则表达式中的任何单词边界是否仅适用于空白并且行为与\b一样?

4 个答案:

答案 0 :(得分:2)

唯一安全的方法是迭代文本节点并在其中进行替换。以下是使用TreeWalker的一种解决方案:

src_text

您可能还希望转义具有特殊正则表达式含义的reset_password_token中的字符。您可以通过快速搜索轻松找到如何做到这一点。例如,请参阅this question

在您的情况下,替换的字符串包含HTML。这将需要更多的工作。我们创建一个新节点并设置其innerHTML,然后用新节点替换旧节点。

小提琴:https://jsfiddle.net/zanhaz0j/

答案 1 :(得分:0)

怎么样:

new RegExp("\\s(" + var + ")\\s")

如果您的单词被空白字符包围,它将找到(并匹配)您的单词。

JsBin:http://jsbin.com/fuliqaxilo/edit?js,console

答案 2 :(得分:0)

试试这个正则表达式:

 /(:?\s|^)(span)(?=([^>]|$))/ig

请参阅Demo

答案 3 :(得分:-1)

  

在正则表达式中是否有任何单词边界仅用于空白并且表现得像\ b?

您希望它的行为类似于\b,或者您希望它的行为类似于空格。它不能同时做到这两点。

由于前者显然不符合您的要求,为什么不实际使用空格?

即,\b交换\s

请不要忘记\s不是零宽度,因此如果您正在执行替换,或者将其置于前瞻和后瞻断言中,您将不得不考虑它。