正規表現の使い方

正規表現とは?

正規表現とは「regular expression」を日本語に訳したもので、「文字の組み合わせパターン」のことです。主に文字列の検索や置換をするときに使います。
わかり易く言うと「文字列のパターンを作って、検索対象の文字列がそのパターンにマッチしているかどうか」で判定していく感じです。

基本形

基本形はスラッシュとスラッシュの間にパターンを定義して、最後にパターンのオプションを記述します。
正規表現のオプション(修飾子)
gマッチした要素を全て呼び出す(通常は最初にマッチしたものしか呼び出さない。)
i大文字小文字を区別しない。
m文字列が複数行ある場合に、複数行にまたがって検索する。(通常は改行されていたら、複数行検索しない。)
s文字列の途中で改行されていた場合でも、「.(ピリオド)※任意の一文字・ワイルドカード」を使って検索できるようにする。
xパターンの中の空白・スペースを無視してくれる。(正規表現を文法に従ってそのまま詰めて書くと可読性が悪くなるが、もしスペースを入れて区切って書くとすごくわかり易くなる。これを使うと後から見易くて便利。)
例えば、大文字小文字関係なくabcに一致するパターンを検索する場合は

メタ文字

[ ]

[ほにゃらら] かっこの中の任意の一文字にマッチするかどうか。 とすると「carとcan」が一致します。

.ピリオド

任意のひと文字 とすると「canやconやc9nなど」が一致します。

^キャレット

行頭 とすると「sで始まる文字列は全て」一致します。例えば、stringやstudyなど。

$ドルマーク

行末 とすると「dで終わる文字列は全て」一致します。例えば、goodやbedやmodなど。 とすると「cで始まり任意の2文字が入り、tで終わる文字列」と一致します。例えば、centなど。

{数字}なみかっこ

{数字}は、直前の文字列を繰り返す回数を示します。 例えば とすると、「2桁の数字」と一致します。

{数字,}

数字の回数以上繰り返します。 とすると「2桁以上の数字」と一致します。

{数字a,数字b}

{数字a,数字b}は、数字aから数字bまでの回数繰り返します。 とすると「3桁から5桁の数字」と一致します。 とすると「アルファベット」で5文字と一致します。 とすると「アルファベットで3から6文字」と一致します。

?

?は0回か1回繰り返します。イメージ的には、{0,1}みたいな感じです。 とすると、「nullか一桁の数字」です。

*

*は、0回(null)もありえるし、それ以降の無限回繰り返すパターンにも一致します。イメージ的には、{0,無限}または{0,}みたいな感じです。 とすると、「nullか全ての数字」に一致します。

+

+は、1回以上無限回繰り返すパターンにも一致します。0回(null)はありえません。イメージ的には、{1,無限}または{1,}みたいな感じです。 とすると、「1桁の数字から全ての数字」に一致します。必ず1回は繰り返します。0はありえますが、nullは含みません。

() 丸かっこ

オアでよく使います。 イメージ的には数字の計算のときの丸括弧の使い方に似ています。 とすると、「dog or cat」が一致します。

よく使う定義されているメタ文字

正規表現のオプション(修飾子)
\tタブ
\d数字。[0-9]と同じ意味。
\D数字以外。[^0-9]と同じ意味。
\sスペース・空白
\w英字(アルファベット)と数字とアンダーバー。[a-zA-Z0-9_]と同じ意味。
例えば、 とすると と同じ意味となり、「4桁の数字」と一致します。

その他

inputタグのpattern属性

html5では、inputタグのpattern属性があるが、safariでは使えないため実質inputタグのpattern属性を指定するのは使えません。