Javascript RegExp 忽略元字符

标签 javascript regex

我花了几个小时试图解决这个问题,但没有运气。如果有人能指出我正确的方向,我将不胜感激。

问题在于 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

最佳答案

您还可以使用 String.raw 标记函数 ( more on MDN ) - 它会忽略(不处理)任何转义序列又名元字符并允许替换:

var orOperator = 'or';
var term = 'ipsum';
var str = 'lorem or ipsum or ipsumal';
var regexStr = String.raw`(\s)\b${orOperator}\s${term}\b`;
var regexFlags = 'gi';
var regex = new RegExp(regexStr, regexFlags);
console.log(regex);

str = str.replace(regex, '');

结果是

/(\s)\bor\sipsum\b/gi
'lorem or ipsumal'

关于Javascript RegExp 忽略元字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38400068/

相关文章:

javascript - 性能 : NaCl vs Emscripten

javascript - 使用 Node.js、Express 和 Trialpay 进行 HMAC MD5 验证

javascript - 时间.分钟和时间.秒未定义

python - 正则表达式中的组是什么类型的容器

regex - 从字符串中提取可选值

java - REGEX 贪婪或语法错误

javascript - Bing Maps API v7 限制

javascript - AJAX 调用后,新加载的 CSS 选择器对 jQuery.each() 不可用

regex - VB.Net正则表达式匹配

java - 如何用 Java 正则表达式中的相同字母表和换行符替换一个字母表