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
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 に答える
1

括弧は、正規表現の特殊なケースとして機能します。バックスラッシュでそれらをエスケープします。また、代わりにスラッシュ表記を使用して RegExp オブジェクトを作成することもできます。

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

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

于 2012-10-02T16:31:16.193 に答える