JavaScript リファレンス - 正規表現 サンプル集

正規表現を使った文字列の分解、抽出、チェックに関するサンプル例。

お品書き
● 年月日 ("yyyymmdd") の分解
● 年月日 ("平成y年m月d日") の分解
● セミコロン区切りの文字列 ("string;string;string") の分解
● 全角文字が含まれているかチェック (Shift-JISのみ)
● 日付かどうかチェック
● メールアドレスかどうかチェック
● すべて数字であるかチェック


● 年月日 ("yyyymmdd") の分解

【データ例】"20150125"
【正規表現】(\d{4})(\d{2})(\d{2})
【例】
サンプル結果
s = "20150125";
result = s.match( /(\d{4})(\d{2})(\d{2})/ );
【解説】
書式意味結果
(\d{4})4桁の数字を抽出2015
(\d{2})2桁の数字を抽出01
(\d{2})2桁の数字を抽出25


● 年月日 ("平成y年m月d日") の分解

【データ例】"平成27年1月25日"
【正規表現】\D+(\d+)年(\d+)月(\d+)日
【例】
サンプル結果
s = "平成27年1月25日";
result = s.match( /\D+(\d+)年(\d+)月(\d+)日/ );
【解説】
書式意味結果
\D+数字以外の1文字以上の文字列平成
(\d+)1桁以上の数字を抽出27
(\d+)1桁以上の数字を抽出1
(\d+)1桁以上の数字を抽出25


● セミコロン区切りの文字列 ("string;string;string") の分解

【データ例】"abcd;3.14;あいうえお"
※ データ項目は、省略可とします。
【正規表現】(.*);(.*);(.*)
【例】
サンプル結果
s = "abcd;3.14;あいうえお";
result = s.match( /(.*);(.*);(.*)/ );
s = "abcd;;あいうえお";
result = s.match( /(.*);(.*);(.*)/ );
【解説】
書式意味結果
(.*)0文字以上の文字列を抽出abcd
;セパレータはセミコロンであること;
(.*)0文字以上の文字列を抽出3.14
;セパレータはセミコロンであること;
(.*)0文字以上の文字列を抽出あいうえお
※ 1文字以上の文字列(項目省略不可)の抽出であれば、(.+)
※ タブ区切りであれば、\t


● 全角文字が含まれているかチェック

【正規表現】[^\x01-\x7E]
※ Shift-JIS用
【例】
サンプル結果
s = "ABC123";
result = s.search( /[^\x01-\x7E]/ );
s = "全角です";
result = s.search( /[^\x01-\x7E]/ );
s = "ABCアイウエ";
result = s.search( /[^\x01-\x7E]/ );
【解説】
書式意味結果
[^\x01-\x7E]半角文字コード以外


● 日付かどうかチェック

【データ例】"2015/1/25"
※ フォーマットは "yyyy/m/d" のみとします。
【正規表現】\d{4}/\d{1,2}/\d{1,2}
【例】
サンプル結果
s = "2015/1/25";
result = s.search( /\d{4}/\d{1,2}/\d{1,2}/ );
s = "25/1/2015";
result = s.search( /\d{4}/\d{1,2}/\d{1,2}/ );
【解説】
書式意味結果
\d{4}数字4桁であること2015
\// であること/
\d{1,2}数字1桁~2桁であること1
\// であること/
\d{1,2}数字1桁~2桁であること25


● メールアドレスかどうかチェック

【データ例】"tatsuya@red.oit-net.jp"
【正規表現】[\w.\-]+@[\w\-]+\.[\w.\-]+
【例】
サンプル結果
s = "tatsuya@red.oit-net.jp";
result = s.search( /[\w.\-]+@[\w\-]+\.[\w.\-]+/ );
s = "red.oit-net.jp";
result = s.search( /[\w.\-]+@[\w\-]+\.[\w.\-]+/ );
s = "tatsuya@com";
result = s.search( /[\w.\-]+@[\w\-]+\.[\w.\-]+/ );
s = "たつや@red.oit-net.jp";
result = s.search( /[\w.\-]+@[\w\-]+\.[\w.\-]+/ );
【解説】
書式意味結果
[\w.\-]+1文字以上の半角英数字かピリオドかハイフンのいずれかであることtatsuya
@@であること@
[\w\-]+1文字以上の半角英数字かハイフンのいずれかであることred
\.ピリオド( . )であること.
[\w.\-]+1文字以上の半角英数字かピリオドかハイフンのいずれかであることoit-net.jp
※ \w は、アンダースコア( _ ) を含む半角英数字。
※ \w は、[A-Za-z0-9_] と同等です。


● すべて数字(0~9)かどうかチェック

【正規表現】^[0-9]+$
【例】
サンプル結果
s = "1980";
result = s.search( /^[0-9]+$/ );
s = "1,980";
result = s.search( /^[0-9]+$/ );
【解説】
書式意味結果
^文字列の先頭とマッチ
[0-9]+1個以上の 0~9であること1980
$文字列の末尾とマッチ


● すべて数字(0~9、マイナス、小数点)かどうかチェック

【正規表現】^[-]?[0-9]+(\.[0-9]+)?$
【例】
サンプル結果
s = "1980";
result = s.search( /^[-]?[0-9]+(\.[0-9]+)?$/ );
s = "-198.0";
result = s.search( /^[-]?[0-9]+(\.[0-9]+)?$/ );
【解説】
書式意味結果
^文字列の先頭とマッチ
[-]?マイナスがあってもいいし、なくてもいい
[0-9]+1個以上の 0~9であること1980
(\.[0-9]+)?1個以上の 0~9であること1980
$文字列の末尾とマッチ