JavaScriptの正規表現

正規表現をしばらく使っていないといつも忘れるので、自分に見やすく簡略化されたカンペをここに用意しました。

よりきちんとJavaScriptの正規表現について調べたければ、正規表現 - JavaScript | MDNを参照してください。

特殊文字の一覧

\
この直後に普通の文字があるとき、その文字は普通の文字ではなく、特殊な文字になる。
この直後に特殊な文字があるとき、その文字は特殊な文字ではなく、普通の文字になる。
.
改行文字以外のどの1文字にもマッチ。
^ と $
それぞれ、入力の先頭、入力の末尾。
[abc] と [^abc]
それぞれ、文字の集合、文字の補集合。
ハイフン(-)を使って範囲指定ができる。
\d と \D
それぞれ、[0-9]、[^0-9]と同じ。
\w と \W
それぞれ、[A-Za-z0-9_]、[^A-Za-z0-9_]と同じ。
{n}
直前の文字がn回出現するものにマッチ。
{n,m}
直前の文字がnm回出現するものにマッチ。
* と + と ?
それぞれ、{0,}、{1,}、{0,1}と同じ意味。
量指定子の直後にある?は、また違う意味を持つ。
(foo)
fooにマッチして、それを記憶。
String.replaceメソッドとよく使う。
(?:foo)
fooにマッチして、それを記憶しない。
\n
nには正の整数。
n番目の括弧にマッチしたものを参照。
foo|bar
fooまたはbarにマッチ。
foo(?=bar)
foobarが続くようなfooにマッチ。
foo(?!bar)
foobarが続かないようなfooにマッチ。
\0
U+0000(NULL)にマッチ。
[\b]
U+0008(BACKSPACE)にマッチ。
\t
U+0009(水平タブ)にマッチ。
\n
U+000A(改行LF)にマッチ。
\v
U+000B(垂直タブ)にマッチ。
\f
U+000C(改ページ)にマッチ。
\r
U+000D(復帰CR)にマッチ。
\s
ホワイトスペース文字にマッチ。
\S
ホワイトスペース文字以外の文字にマッチ。
\b
単語の区切りにマッチ。
\B
単語の区切り以外にマッチ。
\cX
XにはA~Z。Ctrl-Xにマッチ。
\xhh
hh(2桁16進数)というコードの文字にマッチ。
\uhhhh
hhhh(4桁16進数)というコードの文字にマッチ。

フラグ

gフラグ(global)
グローバル検索する。
iフラグ(ignoreCase)
大文字と小文字を区別しない。
mフラグ(multiline)
複数行検索する。

使い方

RegExp.execメソッドを使う場合

  1. var re = /a(b+)c/g;
  2. var arr = re.exec('ac-abc-abbc');
arr;
['abc', 'b']
arr.index;//マッチした位置。
3
arr.input;//元の文字列。
'ac-abc-abbc'
arr[0];//マッチした文字列。
'abc'
arr[1];//1つ目の括弧によって記憶された部分文字列。
'b'
re.lastIndex;//gフラグが立っているとき限定。次のマッチが始まる位置。
6
re.source;//パターンのテキスト。
'a(b+)c'
re.global;//gフラグが立っているか。
true
re.ignoreCase;//iフラグが立っているか。
false
re.multiline;//mフラグが立っているか。
false

String.matchメソッドを使う場合

  1. var re = /a(b+)c/g;
  2. var arr = 'ac-abc-abbc'.match(re);

arrには['abc', 'abbc']が入る。gフラグが立っていると、execメソッドを使う場合と異なり、全部のマッチを含む配列が返ってくる。

gフラグが立っていない場合は、execメソッドを使う場合と返ってくる配列は同様になる。

そのほかのメソッド