为什么这段代码不能正常工作?
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??
有人可以解释这里出了什么问题吗?
答案 0 :(得分:6)
您需要引用直接用作正则表达式的temp
的特殊字符。 (
和)
字符将字符分组到模式中,而不是实际匹配'('和')'。
答案 1 :(得分:4)
var temp = "@TEMP \\(A1\\)"
答案 2 :(得分:1)
括号在正则表达式中提供特殊情况。用反斜杠逃脱它们。您也可以使用正斜杠表示法来创建一个RegExp对象。
var loRegExp = /@TEMP \(A1\)/gi;
https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions
答案 3 :(得分:1)
var temp = "@TEMP \\(A1\\)";
var text = "1st Oct @TEMP (A1)";
text = text.replace(new RegExp(temp, "gi"), "");
console.log(text);
卷曲括号是Regexp中的一个特殊字符,你应该使用反斜杠来逃避它。