文字列の置き換えや検索などをより便利に行うためにJavaScriptでは正規表現を使用する事が多くあります。
例えばアクセスしているブラウザーIOSのものかどうかを判定したいときに「iPhone/iPod/iPad」のユーザーエージェントを判定しますが、従来通りの方法だと各種(3つ)のプログラムを書かないといけないが、正規表現を使う事で一つにまとめる事が出来ます。
他にも特定の文字絵列が含まれているかどうかや、電話番行の構成かどうかや判定できたりします。
そんな便利な表現方法なのでJavaScriptを勉強する際は必ず覚えておきましょう。
難易度(MAX10) | ★★★★★★☆☆☆☆ |
正規表現の基本
以下は非常に簡単な正規表現の例文です。
/K/.test1('KT LIFE'); //「K」が「KT LIFE」に含まれてるかどうか
/^KT/.test2('KT LIFE'); //「KT LIFE」が「KT」から始まっているかどうか
/\d/.test3('KT LIFE'); //「KT LIFE」に数字が含まれているかどうか
/KT.*/.test4('KT LIFE'); //「K」の次の「T」が0回以上続かどうか
/田.*郎/.test5('田中太郎'); //「田」と「郎」の間に文字が含まれているかどうか
/\d+-\d+-\d+/.test6('090-1234-5678'); //「数字-数字-数字」という構成(携帯番号)になっているかどうか
「//」も正規表現の一つで、その中に入っている「^」や「\d」などが正規表現です。
正規表現は、文字列の集合を一つの文字列で表現する方法の一つです。正則表現とも呼ばれ、形式言語理論の分野では比較的こちらの訳語の方が使われる。まれに正規式と呼ばれることもある。 もともと正規表現は形式言語理論において正規言語を表すための手段として導入された。
良く使われる正規表現一覧
以下の表は、良く使用される正規表現です。
全てを暗記する必要はないが、こういった事が出来るんだといった感覚は持っておこう。
正規表現 | 説明 | 正規表現の例 | マッチする例 |
---|---|---|---|
. | 任意の1文字 にマッチします。 | . | A あ |
+ | 直前の文字が 1回以上 繰り返す場合にマッチします。 最長一致。条件に合う最長の部分に一致します。 | Ap+ple | Apple pple |
* | 直前の文字が 0回以上 繰り返す場合にマッチします。 最長一致。条件に合う最長の部分に一致します。 | Ap*le | Aple ple |
? | 直前の文字が 0個か1個 の場合にマッチします。 最長一致。条件に合う最長の部分に一致します。 | Ap?ple | Aple ple |
+? | 直前の文字が 1回以上 繰り返す場合にマッチします。 最短一致。条件に合う最短の部分に一致します。 | Ap+?le | Apple |
*? | 直前の文字が 0回以上 繰り返す場合にマッチします。 最短一致。条件に合う最短の部分に一致します。 | Ap*?le | Ale |
?? | 直前の文字が 0個か1個 の場合にマッチします。 最短一致。条件に合う最短の部分に一致します。 | Ap??ple | Aple |
| | いずれかの条件 (OR条件) として使われます。 | App(le|ol) | Apple |
\ | 直後の正規表現記号を エスケープ します。 | Ap\+ple | Ap+ple |
[...] | 角括弧に含まれるいずれか1文字にマッチします。 | [abc] | a, b, c |
[^...] | 角括弧に含まれる文字以外にマッチします。 | [^abc] | a, b, c 以外の文字 |
(...) | 文字を1つのグループにまとめることができます。 | App(le|ol) | Apple |
{n} | 直前の文字の桁数を指定できます。 | a{3} | aaa |
{n,} | 直前の文字の最小桁数のみ指定できます。 | a{3,} | aaa |
{n,m} | 直前の文字の最小桁数と最大桁数を指定できます。 最長一致。条件に合う最長の部分に一致します。 | a{3,4} | aaa |
{n,m}? | 直前の文字の最小桁数と最大桁数を指定できます。 最短一致。条件に合う最短の部分に一致します。 | a{3,4}? | aaa |
正規表現 | 説明 | 対応する表現 |
---|---|---|
\t | タブ | (なし) |
\r | 改行。CR(Carriage Return:0x0D) | (なし) |
\n | 改行。LF(Line Feed:0x0A) | (なし) |
\d | すべての数字 | [0-9] |
\D | すべての数字以外の文字 | [^0-9] |
\s | 垂直タブ以外のすべての空白文字 | [ \t\f\r\n] |
\S | すべての非空白文字 | [^ \t\f\r\n] |
\w | アルファベット、アンダーバー、数字 | [a-zA-Z_0-9] |
\W | アルファベット、アンダーバー、数字以外の文字 | [^a-zA-Z_0-9] |
正規表現 | 説明 | 正規表現の例 | マッチする例 |
---|---|---|---|
^ | 直後の文字が行の 先頭 にある場合にマッチします。 | ^Apple | Apple... |
$ | 直前の文字が行の 末尾 にある場合にマッチします。 | Apple$ | ...Apple |
\< | 単語の先頭にマッチします。 | \< | *Apple |
\> | 単語の末尾にマッチします。 | \> | Apple* |
\b | 単語の先頭か末尾にマッチします。 | \b | *Apple* |
\B | 単語の先頭か末尾以外にマッチします。 | \B | Apple |
\A | ファイルの先頭にマッチします。 | \A | (なし) |
\z | ファイルの末尾にマッチします。 | \z | (なし) |
\G | 直前の一致文字列の末尾にマッチします。 | \G | (なし) |
正規表現 | 説明 |
---|---|
\0 | 一致した文字列全体に置換します。 |
\1 ~ \9 | 一致した文字列の1~9番目に対応する文字列に置換します。 |
\l | 次の1文字を小文字に変換します。 |
\L...\E | 挟まれた文字列を小文字に変換します。 |
\u | 次の1文字を大文字に変換します。 |
\U...\E | 挟まれた文字列を大文字に変換します。 |
以上が「良く使われる正規表現一覧」でした。
正規表現を理解するとプログラムの記述がぐんっと楽になります。
JavaScriptの基礎的な文法を覚えたら、並行して正規表現を覚えることも意識していきましょう。
(もしくは当サイトなどのまとめをブックマークしておきいつでも使える様にしておきましょう。)