LoginSignup
80
41

More than 5 years have passed since last update.

Javascript での 正規表現 の エスケープ について

Last updated at Posted at 2016-09-14

Javascript : 正規表現 の エスケープ について

  • . * + ^ | [ ] ( ) ? $ { }などの文字を文字列として正規表現の判定内で使いたい場合エスケープしなければならない。
  • 正規表現リテラルで表す場合は、スラッシュ/もエスケープしなければ区切り文字として認識されるので気をつける。

文字列リテラル(new RegExp("~")) の場合は、バックスラッシュは2つ必要。

"\\." "\\*" "\\+" ... となる。

下記の例では、バックスラッシュは1つでエスケープしたものは、文字列の「.」としてみなされず、正規表現のドット(改行文字以外のどの 1 文字にもマッチ)として判定される。[X]

"a".match(new RegExp("\."))
-> ["a"]

バックスラッシュ2つの場合は、ドットが文字列として認識されるので、下記の例で "a" とはマッチしない。[◯]

"a".match(new RegExp("\\."))
-> null

正規表現リテラルの場合は、バックスラッシュは1つでよい。

match(/~/)

"\." "\*" "\+" ... となる。

下記の例は、正規表現リテラルでドット(改行文字以外のどの 1 文字にもマッチ)を表したもので、"a" とマッチする。

"a".match(/./)
-> ["a"]

下記の例は、ドットを文字列としてエスケープしているので、"a" とはマッチしない。

"a".match(/\./)
-> null
80
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
80
41