我的new RegExp("(\\b" + var + "\\b)")
的正则表达式有问题。我遇到的问题是,如果我的文本中有一个span元素并且我正在替换 word span,它会将span元素替换为。我认识到“&lt;”的问题计为“单词边界”,以便找到<**span**>
但我不想要它。那么正则表达式中的任何单词边界是否仅适用于空白并且行为与\b
一样?
答案 0 :(得分:2)
唯一安全的方法是迭代文本节点并在其中进行替换。以下是使用TreeWalker的一种解决方案:
src_text
您可能还希望转义具有特殊正则表达式含义的reset_password_token
中的字符。您可以通过快速搜索轻松找到如何做到这一点。例如,请参阅this question。
在您的情况下,替换的字符串包含HTML。这将需要更多的工作。我们创建一个新节点并设置其innerHTML,然后用新节点替换旧节点。
答案 1 :(得分:0)
怎么样:
new RegExp("\\s(" + var + ")\\s")
如果您的单词被空白字符包围,它将找到(并匹配)您的单词。
答案 2 :(得分:0)
答案 3 :(得分:-1)
在正则表达式中是否有任何单词边界仅用于空白并且表现得像\ b?
您希望它的行为类似于\b
,或者您希望它的行为类似于空格。它不能同时做到这两点。
由于前者显然不符合您的要求,为什么不实际使用空格?
即,\b
交换\s
。
请不要忘记\s
不是零宽度,因此如果您正在执行替换,或者将其置于前瞻和后瞻断言中,您将不得不考虑它。