タスカルツールズ

正規表現の基本と書き方|よく使うパターン一覧

正規表現のメタ文字、量指定子、よく使うパターン(メールアドレス・電話番号・郵便番号など)を解説します。

正規表現とは

正規表現(Regular Expression)とは、文字列のパターンを特殊な記法で表現するための仕組みです。テキストの検索・置換・入力値の検証(バリデーション)など、幅広い場面で使われています。JavaScript、Python、Java、Rubyなど主要なプログラミング言語のほぼ全てで利用可能です。

メタ文字一覧

正規表現で特別な意味を持つ文字を「メタ文字」と呼びます。以下がよく使われるメタ文字の一覧です。

メタ文字意味
.改行を除く任意の1文字a.c → abc, a1c
\d半角数字1文字([0-9]と同等)\d\d → 42, 09
\w半角英数字とアンダースコア([A-Za-z0-9_])\w+ → hello_1
\s空白文字(スペース・タブ・改行)\s+ → 連続する空白
^文字列・行の先頭^Hello → 先頭のHello
$文字列・行の末尾end$ → 末尾のend
*直前の要素の0回以上の繰り返しab*c → ac, abc, abbc
+直前の要素の1回以上の繰り返しab+c → abc, abbc
?直前の要素の0回または1回colou?r → color, colour
[...]括弧内のいずれか1文字[aeiou] → 母音1文字
[^...]括弧内以外の1文字[^0-9] → 数字以外
(...)グループ化(abc)+ → abc, abcabc
|選択(OR)cat|dog → catまたはdog
\エスケープ\. → ドット文字そのもの

※大文字版(\D, \W, \S)はそれぞれ小文字版の否定(数字以外、英数字以外、空白以外)を表します。

量指定子(繰り返し回数の指定)

量指定子を使うと、直前の要素を何回繰り返すかを指定できます。

量指定子意味
{n}ちょうどn回\d{4} → 4桁の数字
{n,}n回以上\d{2,} → 2桁以上の数字
{n,m}n回以上m回以下\d{2,4} → 2〜4桁の数字
*0回以上({0,}と同等)a* → 空文字, a, aa...
+1回以上({1,}と同等)a+ → a, aa, aaa...
?0回または1回({0,1}と同等)a? → 空文字またはa

貪欲と非貪欲

量指定子はデフォルトで「貪欲(greedy)」に動作し、できるだけ多くの文字にマッチしようとします。量指定子の後に?を付けると「非貪欲(lazy)」になり、できるだけ少ない文字にマッチします。

<.+> → 「<b>太字</b>」全体にマッチ(貪欲)

<.+?> → 「<b>」と「</b>」に個別にマッチ(非貪欲)

よく使うパターン一覧

実務でよく使われる正規表現パターンの一覧です。そのままコピーして利用できます。

用途正規表現パターン
メールアドレス^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
携帯電話番号^0[789]0-\d{4}-\d{4}$
固定電話番号^0\d{1,4}-\d{1,4}-\d{4}$
郵便番号^\d{3}-?\d{4}$
URL^https?://[^\s]+$
半角数字のみ^\d+$
全角カタカナのみ^[ァ-ヴー]+$
日付(YYYY-MM-DD)^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$

※メールアドレスやURLの完全な検証は正規表現だけでは難しいため、簡易的なチェック用途として使用してください。日付パターンは形式のみのチェックで、2月30日のような存在しない日付は検出できません。

先読みと後読み

先読み(Lookahead)と後読み(Lookbehind)は、文字列を消費せずに条件を確認する機能です。

種類構文
肯定先読みX(?=Y)\d+(?=円) → 「100円」の100
否定先読みX(?!Y)(?!\d)\w+ → 英字で始まる単語
肯定後読み(?<=Y)X(?<=\$)\d+ → 「$50」の50
否定後読み(?<!Y)X(?<!\$)\d+ → 「50個」の50

フラグ(検索オプション)

フラグはパターンの後ろに付けて検索の挙動を制御するオプションです。JavaScriptでは/パターン/フラグの形式で記述します。

フラグ名前意味
gglobal文字列内の全ての一致を検索する
icase-insensitive大文字・小文字を区別しない
mmultiline^と$が各行の先頭・末尾にマッチする
sdotAll.(ドット)が改行文字にもマッチする

関連ツール