そもそも正規表現とは
メタ文字とよばれる記号群を利用し、文字、数字などを検索・置換に特化した表現方法
(英語ではregular expressionで、regexと略される)
メタ文字とは
正規表現で特殊な意味を持つ非アルファベット文字
こちらに一覧があります
\d
半角数字1文字
{n,m}
直前の文字が n 文字以上、m 文字以下
{n}
直前の文字がちょうど n 文字
[AB]
AまたはBが1文字
[a-z]
aからzまでの文字
実例
正規表現を編集できるオンラインエディタが便利
必ず開始と終了に/
(バックスラッシュ)が入ります
電話番号(あくまで03-0000-0000など2桁-4桁-4桁の場合)
/\d\d-\d\d\d\d-\d\d\d\d/
郵便番号
/^[0-9]{3}-[0-9]{4}$/
^
は文字列の先頭であること
[0-9]{3}
は、0-9までの数字がちょうど3文字
つまり、0〜9の数字3桁から始まることを表す
[0-9]{4}$
の$
は文字列の末尾であることを表す。
つまり、0〜9の数字4桁で終わることを表す
前方一致
^ANNUAL
ANNUALという文字列で始まる
後方一致
RECORD$
RECORDという文字列で終わる
余談ですが、Eメールアドレスともなるとこんな複雑な正規表現になるみたいです。
こんな正規表現を自力で書くのは現実的ではないので、既にあるもので信用できるものを利用しましょう。ここから引用
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
正規表現を使って文字列を判定する例
const str = "JAPAN_FOOTBALL_ASSOCIATION"
// 前方一致でJAPAN_という文字列で始まるかを判定する
const matchResult = str.match(/^JAPAN_/)
// 判定した結果、一致する場合に以下のようなデータが返ってくる
0: "JAPAN_"
groups: undefined
index: 0
input: "JAPAN_FOOTBALL_ASSOCIATION"
length: 1
// 存在しない場合は null が返ってくる
まとめ
正規表現を使うときは、検索対象文字列の 「法則(パターン)」 をうまく見つけだすのが大切だそうです。
また学びがあれば追記していきます。
参考サイト
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_expressions
https://qiita.com/jnchito/items/893c887fbf19e17d3ff9