- 正規表現は下記のようにスラッシュで囲まれたパターンからなる
let pattern = /正規表現/;
- match()
- search()
- 正規表現パターン
- 主なオプションフラグ
- 参考資料
match()
文字列中で一致するものを検索.検索結果の配列を返す.
match()を使った正規表現パターンの記述
let result = 文字列.match(正規表現)
let pattern = /ABC/; let string = 'abcABC'; let result = string.match(pattern); console.log(result); // [ 'ABC', index: 3, input: 'abcABC', groups: undefined ]
search()
文字列中で一致するものがあるか確認.マッチした場所の文字位置(インデックス)を返す.マッチしない場合は-1を返す
search()を使った正規表現パターンの記述
let result = 文字列.search(正規表現)
let pattern = /ABC/; let string = 'abcABC'; let result = string.search(pattern); console.log(result); // 3
正規表現パターン
単純な文字列にマッチするか
/ABC/
単純にABCという文字列にマッチするか
- マッチする
let pattern = /ABC/; let string = 'abcABC';
- マッチしない
let pattern = /ABC/; let string = 'abc';
どれか1文字マッチするか
[ABC]
ABCのどれか1文字にマッチするか - マッチする
let pattern = /[ABC]/; let string = 'aAbBcCdD';
- マッチしない
let pattern = /[ABC]/; let string = 'abcd';
指定文字以外のどれか1文字にマッチするか
[^ABC]
ABC以外のどれか1文字にマッチするか
- マッチする
let pattern = /[^ABC]/; let string = 'AaBbCc';
- マッチしない
let pattern = /[^ABC]/; let string = 'DdEeFf';
選択範囲のどれか1文字にマッチするか
[A-C]
AからCまでのどれか1文字にマッチするか
- マッチする
let pattern = /[A-C]/; let string = 'abcABC';
- マッチしない
let pattern = /[A-C]/; let string = 'abcefg';
エスケープ
\
\の次に書く文字列をエスケープする 例えば,下記のように/(スラッシュ)を見つけたい時などにエスケープする
//エスケープしないとこうなる let pattern = ///; //エスケープあり let pattern = /\//; let string = 'ABC/abc'; let result = string.search(pattern); console.log(result); // 3
文字列の先頭にマッチするか
^A
文字列(行)の先頭にマッチするか
- マッチする
// Aが先頭にあるかどうか let pattern = /^A/; let string = 'ABB'; let result = string.search(pattern); console.log(result); // 0
- マッチしない
// Aが先頭にあるかどうか let pattern = /^A/; let string = 'BAB'; let result = string.search(pattern); console.log(result); // -1
文字列の末尾にマッチするか
A$
文字列(行)の末尾にマッチするか
下記にマッチする時と,しない時の例を示す
- マッチする
// Aが末尾にあるかどうか let pattern = /A$/; let string = 'BABA'; let result = string.search(pattern); console.log(result); // 3
- マッチしない
// Aが末尾にあるかどうか let pattern = /A$/; let string = 'BAB'; let result = string.search(pattern); console.log(result); // -1
直前文字列の0回以上の繰り返しにマッチするか
hu*
直前の文字列huの0回以上の繰り返しにマッチするか
- マッチする
// huが0回以上繰り返されているかどうか let pattern = /hu*/; let string = 'hhhhhuuu'; let result = string.search(pattern); console.log(result); // 0
// huが0回以上繰り返されているかどうか let pattern = /hu*/; let string = 'uuuh'; let result = string.search(pattern); console.log(result); // 3
- マッチしない
// huが0回以上繰り返されているかどうか let pattern = /hu*/; let string = 'uuuu'; let result = string.search(pattern); console.log(result); // -1
直前の文字列の1回以上の繰り返しにマッチするか
a+
直前の文字列aの1回以上の繰り返しにマッチするか
- マッチする
// aが1回以上繰り返されているかどうか let pattern = /a+/; let string = 'banana'; let result = string.search(pattern); console.log(result); // 1
- マッチしない
// aが1回以上繰り返されているかどうか let pattern = /a+/; let string = 'lemon'; let result = string.search(pattern); console.log(result); // -1
直前の文字列の0回か1回の出現にマッチするか
a?
直前の文字列aの0回か1回の出現にマッチするか
- マッチする
// huが0回か1回の出現しているかどうか let pattern = /hu?/; let string = 'huuuuu'; let result = string.search(pattern); console.log(result); // 0
- マッチしない
// huが0回か1回の出現しているかどうか let pattern = /hu?/; let string = 'nnnnnn'; let result = string.search(pattern); console.log(result); // -1
任意の一文字にマッチするか
h.t
h.tの.は任意の一文字にマッチするか
- マッチする
// h◯tに一致するかどうか let pattern = /h.t/; let string = 'hat'; let result = string.search(pattern); console.log(result); // 0
- マッチしない
// h◯tに一致するかどうか let pattern = /h.t/; let string = 'heat'; let result = string.search(pattern); console.log(result); // -1
直前の文字をn回表示とマッチするか
{n}
直前の文字をn回表示とマッチするか
- マッチする
// [0-9]{3}は3桁の数字 let pattern = /[0-9]{3}/; let string = '123';
- マッチしない
// [0-9]{3}は3桁の数字 let pattern = /[0-9]{3}/; let string = 'abc';
直前の文字をn回以上表示とマッチするか
{n,}
直前の文字をn回以上表示とマッチするか
- マッチする
// [0-9]{3,}は3桁以上の数字 let pattern = /[0-9]{3,}/; let string = '1234';
- マッチしない
// [0-9]{3,}は3桁以上の数字 let pattern = /[0-9]{3,}/; let string = '12';
直前の文字をm~n回表示とマッチするか
{m,n}
直前の文字をm~n回表示とマッチするか
- マッチする
// [0-9]{3~5}は3~5桁の数字 let pattern = /[0-9]{3,5}/; let string = '1234';
- マッチしない
// [0-9]{3~5}は3~5桁の数字 let pattern = /[0-9]{3,5}/; let string = '12abc';
アンダースコアと英数字にマッチするか
\w
アンダースコアと英数字にマッチするか.[A-Za-z0-9_] と同じ
- マッチする
// アンダースコアと英数字にマッチするか let pattern = /\w/; let string = '12a_Abc';
- マッチしない
// アンダースコアと英数字にマッチするか let pattern = /\w/; let string = '$';
文字以外にマッチするか
\W
文字以外にマッチするか.[^\w]と同じ[^A-Za-z0-9_]
- マッチする
// 文字以外にマッチするか let pattern = /\W/; let string = '&%#';
- マッチしない
let pattern = /\W/; let string = '12a_Abc';
数字にマッチするか
\d
数字にマッチするか.[0-9] と同じ
- マッチする
// 数字にマッチするか let pattern = /\d/; let string = '3';
// 3桁の数字か let pattern = /\d{3}/; let string = '123';
- マッチしない
// 数字にマッチするか let pattern = /\d/; let string = 'abc';
数字以外にマッチするか
\D
数字にマッチするか.[0-9] と同じ
- マッチする
// 数字以外にマッチするか let pattern = /\D/; let string = 'abc';
- マッチしない
// 数字以外にマッチするか let pattern = /\D/; let string = '3';
主なオプションフラグ
- オプションありの正規表現は下記のようなパターンからなる
let pattern = /正規表現/オプション;
グローバルリサーチ
g
グローバルリサーチ.文字列全体に対してマッチするか (指定なしの場合は1度マッチングした時点で処理を終了).
let pattern = /[A-D]/g; let string = 'ABCDEFGHI';
大文字と小文字を区別しない
i
大文字と小文字を区別しない (指定なしの場合は区別する).
- マッチする
let pattern = /[a-d]/i; let string = 'ABCDEFGHI';
- マッチしない
let pattern = /[a-d]/; let string = 'ABCDEFGHI';
Unicode対応
u
Unicode対応 (漢字などを認識してくれるようになる).
- マッチする
let pattern = /[赤青]色/u; let string = '赤色';
- マッチしない
let pattern = /[赤青]色/u; let string = '黄色';
参考資料
【JavaScript入門】4つのパターンで理解する正規表現の使い方まとめ! | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト