1. ホーム
  2. javascript

[解決済み] 正規表現範囲内のドットのエスケープ

2023-03-28 11:43:19

質問

なぜかこの2つの正規表現は同じように動作します。

"43\\gf..--.65".replace(/[^\d.-]/g, "");​  // 43..--.65
"43\\gf..--.65".replace(/[^\d\.-]/g, "");​  // 43..--.65

デモ

最初の正規表現では、ドットをエスケープしていません( . ) 一方、2 番目の正規表現では ( \. ).

どのような違いがあり、なぜ同じように動作するのでしょうか?

どのように解決するのですか?

ドットが文字クラス(角括弧 [] ).

を見てみましょう。 http://www.regular-expressions.info/reference.html を見ると、(char classの項目に)こう書いてあります。

^-]以外の任意の文字は、その文字を文字クラスの一致可能な文字に追加します。 を追加します。