フォームを作成する際に「正規表現」についての理解が必須に感じたので、表にしてまとめてみます。 追記があれば更新します。
正規表現一覧
記号/ 表現方法 |
概要 | 使用例 |
---|---|---|
. |
任意の1文字 | a.c はabc やaxc にマッチ |
* |
直前のパターンの0回以上の繰り返し | ab*c はac , abc , abbc にマッチ |
+ |
直前のパターンの1回以上の繰り返し | ab+c はabc , abbc にマッチ |
? |
直前のパターンの0回または1回の出現 | ab?c はac , abc にマッチ |
^ |
行の先頭にマッチ | ^abc はabc が行の先頭にある場合にマッチ |
$ |
行の末尾にマッチ | abc$ はabc が行の末尾にある場合にマッチ |
[] |
カッコ内のどれか1文字にマッチ | [abc] はa , b , c のいずれかにマッチ |
[^] |
カッコ内のいずれとも異なる1文字にマッチ | [^abc] はa , b , c 以外の任意の文字にマッチ |
() |
グループ化 | (abc)+ はabc , abcabc にマッチ |
\ |
特殊文字のエスケープ | \. , \\ は. や\ にマッチ |
\d |
任意の数字にマッチ | \d{2,4} は2桁から4桁の数字にマッチ |
\w |
単語構成文字にマッチ(アルファベット、数字、アンダースコア) | \w+ は単語にマッチ |
\s |
空白文字にマッチ | \s+ は空白文字の連続にマッチ |
| |
複数のパターンのいずれかにマッチ | a|b はa またはb にマッチ |
\b |
単語の先頭、末尾にマッチ | my\b はmy father , Tommy にマッチ |
文字クラス内での挙動
文字クラス内で特殊な挙動を行う記号について、いくつか例を挙げて説明していきます。
ハイフン-
の使用
文字クラス内でハイフンを使用すると範囲を指定できます。例えば、[a-z]は小文字のアルファベット全体にマッチします。
[0-9] // 0から9のいずれかの数字にマッチ [a-z] // 小文字のアルファベットにマッチ
キャレット^
の使用
文字クラス内でキャレットを最初に置くと否定の意味になります。例えば、[^0-9]は数字以外の任意の文字にマッチします。
[^a-z] // 小文字のアルファベット以外にマッチ [^0-9] // 数字以外の任意の文字にマッチ
因みに、先頭以外でキャレットを使う場合は「文字」としてのキャレットになります。
[^abc] // a, b, c以外の任意の1文字にマッチ [abc^] // a, b, c, ^のいずれか1文字にマッチ
バックスラッシュ\
のエスケープ
文字クラス内で特殊文字をそのままマッチさせたい場合、バックスラッシュを使用してエスケープします。
[a-z\$] // 小文字のアルファベットとドル記号にマッチ [0-9\.\-] // 数字、ドット、ハイフンにマッチ
補足
正規表現を使う上でよく使うTips、補足情報を記載しておきます。
量指定子
「何個〜何個」のように桁数を表すには、{最小桁数,最大桁数} の形式で指定します。したがって以下のようになります。
^\d{1,6}$ // 1桁の数字から6桁の数字で、文字列全体が数字のみで構成されている場合にマッチ {2,} // 2回以上の繰り返し
メールアドレスの検証
簡単なメールアドレスの検証パターンは以下の通りです。
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
貪欲マッチと非貪欲マッチ
.*
は貪欲マッチ(できるだけ最長のマッチング)といい、.*?
は非貪欲マッチ(できるだけ最小のマッチング)をいいます。
<div>内容1</div><div>内容2</div>
例えば上記のようなHTMLのコードがあるとして、それぞれフィルターを掛けて検索すると以下のようになります。
<.*> // <div>内容1</div><div>内容2</div> 全体がマッチ <.*?> // <div> がマッチ
つまり貪欲マッチは最初の<から最後の>までを抽出し、非貪欲マッチでは最初の<から次の>までを抽出しています。
以上です。