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}
- 直前の文字がn~m回出現するものにマッチ。
- * と + と ?
- それぞれ、{0,}、{1,}、{0,1}と同じ意味。
- 量指定子の直後にある?は、また違う意味を持つ。
- (foo)
- fooにマッチして、それを記憶。
String.replaceメソッドとよく使う。 - (?:foo)
- fooにマッチして、それを記憶しない。
- \n
- nには正の整数。
n番目の括弧にマッチしたものを参照。 - foo|bar
- fooまたはbarにマッチ。
- foo(?=bar)
- fooにbarが続くようなfooにマッチ。
- foo(?!bar)
- fooにbarが続かないような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メソッドを使う場合
- var re = /a(b+)c/g;
- 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メソッドを使う場合
- var re = /a(b+)c/g;
- var arr = 'ac-abc-abbc'.match(re);
arrには['abc', 'abbc']が入る。gフラグが立っていると、execメソッドを使う場合と異なり、全部のマッチを含む配列が返ってくる。
gフラグが立っていない場合は、execメソッドを使う場合と返ってくる配列は同様になる。
そのほかのメソッド
- RegExp.test
- String.replace
- String.search
- String.split