正規表現

正規表現

特殊文字を組み合わせて、特定の文字を取り出すことができる。

基本

文字 マッチする場所や説明 最短長一致 記述例 適応文字例
. 任意の一文字 . a
* 直前の文字が0回以上繰り返す 最長 ho*ge hge,hoge,hoogeなど
*? 直前の文字が0回以上繰り返す 最短 ho*?ge hge,hoge,hoo...geなど
+ 直前の文字が1回以上繰り返す 最長 ho*ge hoge,hooogeなど
+? 直前の文字が1回以上繰り返す 最短 ho+?ge hoge,hooge,hooo...geなど
? 直前の文字が0個か1個の場合 最長 ho?ge hge,hoge
?? 直前の文字が0個か1個 最短 ho??ge hge,hoge
| OR条件 ho(ge | ga) hoge,hoga
\ エスケープ ho\+ge ho+ge
[ ] 角括弧に含まれるいずれか1文字 [abc][a-c] a,b,c
[^] 角括弧に含まれる文字以外 [^abc][^a-c] a,b,c以外
( ) 文字パターンを1つのグループにまとめる (a|b|hoge) a,b,hoge
{ } 直前の文字の桁数を指定 a{3} aaa
{ ,} 直前の文字の最小桁数を指定 a{3, } aaa,aaaa...など
{ , } 直前の文字の最小桁数と最大桁数を指定 最長 a{2,3} aa,aaa
{ , }? 直前の文字の最小桁数と最大桁数を指定 最短 a{2,3} aa,aaa

定義されている正規表現

文字 説明 類似表現
\t タブ
\r 改行CR
\n 改行LF
\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]

位置関係の正規表現

文字 マッチする場所
^ 直後の文字が行の先頭にある ^hoge|hoge...
$ 直前の文字が行の末尾にある hoge$|...hoge
\< 単語の先頭
\> 単語の末尾
\b 単語の先頭か末尾
\B 単語の先頭か末尾以外
\A ファイルの先頭
\z ファイルの末尾
\G 直前の一致文字列の末尾

置換文字列

文字 説明
\0 一致した文字列全体に置換え|
\1 ~ \9 一致した文字列の1〜9番目に対応する文字列に置換え|
\l 次の1文字を小文字に変換|
\L...\E 挟まれた文字列を小文字に変換|
\u 次の1文字を大文字に変換|
\U...\E 挟まれた文字列を大文字に変換|

リテラル ... 正規表現のパターンが変わらない場合に使用

var example = /\d/;  // /.../ スラッシュの間に正規表現を記述

コンストラク ... 途中で正規表現のパターンを変更する場合や外部から取得もしくは入力要素から受け取る場合に使用

var example = new RegExp('\\d');  // RegExp()の引数に文字列の正規表現を記述

使用頻度の高い正規表現

固定電話番号

^0\d(-\d{4}|\d-\d{3}|\d\d-\d\d|\d{3}-\d)-\d{4}$

携帯電話番号

^0[789]0-\d{4}-\d{4}$

フリーダイヤル

^(0120|0800)-\d{3}-\d{3}$

日付(YYYY-MM-DD)

^\d{4}-\d\d-\d\d$

郵便番号

^\d{3}-\d{4}$

^ $でパターンを囲むことで前後に余計な文字が入ることを防ぐ