このコードが正常に機能しないのはなぜですか?
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\\)"
var temp = "@TEMP \\(A1\\)";
var text = "1st Oct @TEMP (A1)";
text = text.replace(new RegExp(temp, "gi"), "");
console.log(text);
中括弧は正規表現の特殊文字です。バックスラッシュを使用してエスケープする必要があります。
括弧は、正規表現の特殊なケースとして機能します。バックスラッシュでそれらをエスケープします。また、代わりにスラッシュ表記を使用して RegExp オブジェクトを作成することもできます。
var loRegExp = /@TEMP \(A1\)/gi;
https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions