尝试RegExp为字符串匹配生成正则表达式。与文档中指定的转义混淆。每当使用RegExp构造函数类型时,输入字符串都需要使用该文档中提供的函数进行转义。
正确使用文字方法
"test".match(/te*/gi)
输出:
“特”,“不”
当我尝试使用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 空
在“*”之前会有反斜杠吗?它逃出来了吗?为什么所生成的正则表达式与文字表达式不同?我不知道我从那个医生身上漏掉了什么。
我很感谢你能帮我指出这里的错误!
发布于 2019-05-13 15:45:40
因为您不想转义*
--它是正则字符:
const temp = "te*";
const reg = new RegExp(temp, "gi");
console.log("test".match(reg));
https://stackoverflow.com/questions/56121149
复制