【发布时间】:2016-07-15 15:37:20
【问题描述】:
我一直在努力解决这个问题,但没有任何运气。如果有人能指出正确的方向,将不胜感激。
问题在于 RegExp 对象完全忽略了 \b 和 \s 元字符。
var orOperator = 'or';
var term = 'ipsum';
var str = 'lorem or ipsum or ipsumal';
var regex = new RegExp('(\\s)\\b' + orOperator + '\\s' + term + '\\b', 'gi');
console.log(regex);
str = str.replace(regex, '');
而生成的正则表达式应该是
/(\s)\bor\sipsum\b/gi
我一直得到这个(去掉了元字符),我不知道为什么
/(s)orsipsum/gi
【问题讨论】:
-
你的脚本的运行环境是什么?我在 Chrome、Safari 和 Firefox 上进行了尝试,所有 3 都给了我你期望的结果
-
我无法重现该问题:eval.in/606020。你如何显示模式?
-
我认为我下面的话可能无济于事,但是,正如我记得在 C++ 中,两个斜杠会挤到一个斜杠上,你需要四个单斜杠才能真正得到一个斜杠来转义
-
这不是一个正则表达式问题,而是一个简单的字符串问题。您想知道当您“剥离元字符”和显示字符串时会得到一个奇怪的结果,但您必须了解
'\\'不代表两个反斜杠,而是一个反斜杠。'\b'将消失,因为它代表退格字符,并且由于'\s'不代表任何内容,反斜杠被剥离(忽略)。您必须区分包含字符串的内容和如何表示(编写)它。 -
@YKal 恭喜!操作系统问题可能吗?总之,问题解决了,加油! ✨
标签: javascript regex