【发布时间】:2019-05-13 23:39:19
【问题描述】:
尝试使用 RegExp 生成字符串匹配的正则表达式。对docs 中指定的转义感到困惑。每当使用 RegExp 构造函数类型的输入字符串时,都需要使用该文档中提供的函数进行转义。
正确使用文字方法
"test".match(/te*/gi)
输出:
['te', 't']
当我用 RegExp 构造函数尝试同样的事情时,输出会有所不同。
rg="te*"
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}
exp = new RegExp(escapeRegExp(rg),'gi')
console.log("exp =>", exp);
console.log("test".match(exp));
输出:
exp => /te*/gi
空
'*'之前会有反斜杠吗?它是否正确逃脱?为什么生成的正则表达式与文字表达式不同? 我无法弄清楚我从那个文档中遗漏了什么。
感谢您在此处指出错误的帮助!
【问题讨论】:
标签: javascript regex escaping