Javascript替换函数不能与regexp一起使用

时间:2012-10-02 16:27:37

标签: javascript regex replace

为什么这段代码不能正常工作?

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??

有人可以解释这里出了什么问题吗?

4 个答案:

答案 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中的一个特殊字符,你应该使用反斜杠来逃避它。