1

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

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

4 回答 4

6

您需要引用temp直接用作正则表达式的特殊字符。(和字符将)字符分组到模式中,实际上并不匹配 '(' 和 ')'。

于 2012-10-02T16:29:33.147 回答
4

正则表达式中的括号具有特殊含义,除非转义:

var temp = "@TEMP \\(A1\\)"
于 2012-10-02T16:29:10.667 回答
1

括号在正则表达式中是一种特殊情况。用反斜杠转义它们。您也可以使用正斜杠符号来创建 RegExp 对象。

var loRegExp = /@TEMP \(A1\)/gi;

https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions

于 2012-10-02T16:31:16.193 回答
1
var temp = "@TEMP \\(A1\\)";
var text = "1st Oct @TEMP (A1)";
text = text.replace(new RegExp(temp, "gi"), "");
console.log(text);

大括号是正则表达式中的一个特殊字符,你应该使用反斜杠来转义它。

于 2012-10-02T16:37:22.767 回答