为什么这段代码不能正常工作?
var temp = "@TEMP (A1)"
var text = "1st Oct @TEMP (A1)"
text = text.replace(new RegExp(temp, "gi"), "");
console.log(text); //I get same text even though I used replace instead of 1st Oct??
谁能解释这里出了什么问题?
为什么这段代码不能正常工作?
var temp = "@TEMP (A1)"
var text = "1st Oct @TEMP (A1)"
text = text.replace(new RegExp(temp, "gi"), "");
console.log(text); //I get same text even though I used replace instead of 1st Oct??
谁能解释这里出了什么问题?
您需要引用temp
直接用作正则表达式的特殊字符。(
和字符将)
字符分组到模式中,实际上并不匹配 '(' 和 ')'。
正则表达式中的括号具有特殊含义,除非转义:
var temp = "@TEMP \\(A1\\)"
括号在正则表达式中是一种特殊情况。用反斜杠转义它们。您也可以使用正斜杠符号来创建 RegExp 对象。
var loRegExp = /@TEMP \(A1\)/gi;
https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions
var temp = "@TEMP \\(A1\\)";
var text = "1st Oct @TEMP (A1)";
text = text.replace(new RegExp(temp, "gi"), "");
console.log(text);
大括号是正则表达式中的一个特殊字符,你应该使用反斜杠来转义它。