正規表現チートシート
正規表現の構文をカテゴリ別にまとめたチートシート。アンカー、量指定子、文字クラス、グループ、フラグ、よく使うパターンを検索・コピーできます。
最終更新:
使い方
使い方を開く使い方を閉じる
- 1
検索またはカテゴリでフィルタ
検索欄にパターンやキーワードを入力するか、カテゴリボタン(アンカー、量指定子など)をクリックして絞り込みます。
- 2
説明と使用例を確認
各パターンの説明・使用例・実行結果を確認して、パターンの動作を理解します。
- 3
パターンをコピー
コピーボタンをクリックするとパターンをクリップボードにコピーして、コードやターミナルですぐに使えます。
^文字列(またはmフラグ時は行)の先頭にマッチ
使用例
/^Hello/.test('Hello World')実行結果
true$文字列(またはmフラグ時は行)の末尾にマッチ
使用例
/World$/.test('Hello World')実行結果
true\b単語境界(単語文字と非単語文字の境界)にマッチ
使用例
'cat catalog'.match(/\bcat\b/g)実行結果
['cat']\B非単語境界にマッチ
使用例
'catalog'.match(/\Bcat\B/g)実行結果
null*直前の要素の0回以上の繰り返しにマッチ
使用例
'color colour'.match(/colou*r/g)実行結果
['color', 'colour']+直前の要素の1回以上の繰り返しにマッチ
使用例
'ac abc'.match(/ab+c/g)実行結果
['abc']?直前の要素の0回または1回にマッチ(任意)
使用例
'color colour'.match(/colou?r/g)実行結果
['color', 'colour']{n}直前の要素のn回の繰り返しにマッチ
使用例
'aaa aa a'.match(/a{2}/g)実行結果
['aa', 'aa']{n,}直前の要素のn回以上の繰り返しにマッチ
使用例
'aaa aa a'.match(/a{2,}/g)実行結果
['aaa', 'aa']{n,m}直前の要素のn回以上m回以下の繰り返しにマッチ
使用例
'aaaa aaa aa a'.match(/a{2,3}/g)実行結果
['aaa', 'aaa', 'aa']\d任意の数字([0-9]と等価)にマッチ
使用例
'abc 123'.match(/\d+/g)実行結果
['123']\D数字以外の任意の文字([^0-9]と等価)にマッチ
使用例
'abc 123'.match(/\D+/g)実行結果
['abc ']\w任意の単語文字([A-Za-z0-9_]と等価)にマッチ
使用例
'hello world_2'.match(/\w+/g)実行結果
['hello', 'world_2']\W単語文字以外の任意の文字([^A-Za-z0-9_]と等価)にマッチ
使用例
'hello world'.match(/\W+/g)実行結果
[' ']\s任意の空白文字(スペース・タブ・改行など)にマッチ
使用例
'hello world'.match(/\s+/g)実行結果
[' ']\S空白以外の任意の文字にマッチ
使用例
'hello world'.match(/\S+/g)実行結果
['hello', 'world'][abc]括弧内に列挙された文字のいずれか1文字にマッチ
使用例
'cat bat hat'.match(/[cbh]at/g)実行結果
['cat', 'bat', 'hat'][a-z]指定した範囲内の任意の文字にマッチ
使用例
'Hello World'.match(/[a-z]+/g)実行結果
['ello', 'orld'][^abc]括弧内に列挙されていない任意の文字にマッチ
使用例
'cat 123'.match(/[^\d ]+/g)実行結果
['cat'](...)グループをキャプチャし、$1、$2などで参照可能にする
使用例
'2024-03-15'.replace(/(\d{4})-(\d{2})-(\d{2})/, '$2/$3/$1')実行結果
'03/15/2024'(?:...)キャプチャしないグループ(キャプチャグループより効率的)
使用例
'foobar foobaz'.match(/foo(?:bar|baz)/g)実行結果
['foobar', 'foobaz'](?=...)直後に指定パターンが続く場合のみマッチ(先読みアサーション)
使用例
'100px 200em'.match(/\d+(?=px)/g)実行結果
['100'](?!...)直後に指定パターンが続かない場合のみマッチ(否定先読み)
使用例
'100px 200em'.match(/\d+(?!px)/g)実行結果
['10', '200'](?<=...)直前に指定パターンがある場合のみマッチ(後読みアサーション)
使用例
'$100 €200'.match(/(?<=\$)\d+/g)実行結果
['100'](?<!...)直前に指定パターンがない場合のみマッチ(否定後読み)
使用例
'$100 200'.match(/(?<!\$)\d+/g)実行結果
['200']gグローバル: 最初のマッチで停止せず、すべてのマッチを検索
使用例
'aaa'.match(/a/g)実行結果
['a', 'a', 'a']i大文字小文字を区別しない: 大文字・小文字どちらにもマッチ
使用例
'Hello HELLO'.match(/hello/gi)実行結果
['Hello', 'HELLO']mマルチライン: ^ と $ が各行の先頭・末尾にマッチ
使用例
'line1\nline2'.match(/^line/gm)実行結果
['line', 'line']sドットオール: . が改行文字にもマッチするようになる
使用例
'foo\nbar'.match(/foo.bar/s)実行結果
['foo\nbar']uUnicode: サロゲートペアを含む完全なUnicodeサポートを有効化
使用例
'\u{1F600}'.match(/./u)[0].length実行結果
2.改行を除く任意の1文字にマッチ(sフラグで改行も含む)
使用例
'cat bat'.match(/.at/g)実行結果
['cat', 'bat']a|b左辺または右辺のいずれかにマッチ(OR条件)
使用例
'cat dog bird'.match(/cat|dog/g)実行結果
['cat', 'dog']\.特殊文字をエスケープしてリテラルとしてマッチ
使用例
'3.14'.match(/3\.14/)実行結果
['3.14'](?<name>...)名前付きキャプチャグループ。match.groups.nameで参照可能
使用例
'2024-03-15'.match(/(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})/).groups実行結果
{y: '2024', m: '03', d: '15'}[\w.+\-]+@[\w\-]+\.[a-z]{2,}メールアドレスの簡易パターン
使用例
/.+@.+/.test('user@example.com')実行結果
truehttps?:\/\/[\w\-._~:/?#\[\]@!$&'()*+,;=%]+HTTPまたはHTTPSのURLにマッチ
使用例
/https?:\/\/.+/.test('https://example.com')実行結果
true0\d{1,4}-\d{1,4}-\d{4}日本の電話番号(例: 03-1234-5678)にマッチ
使用例
/0\d{1,4}-\d{1,4}-\d{4}/.test('03-1234-5678')実行結果
true(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)有効なIPv4アドレス(0.0.0.0〜255.255.255.255)にマッチ
使用例
/valid IPv4 pattern/.test('192.168.1.1')実行結果
true\d{4}[-/](?:0[1-9]|1[0-2])[-/](?:0[1-9]|[12]\d|3[01])YYYY-MM-DDまたはYYYY/MM/DD形式の日付にマッチ
使用例
/\d{4}[-\/]\d{2}[-\/]\d{2}/.test('2024-03-15')実行結果
true#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})\bCSSの16進数カラーコード(#RGBまたは#RRGGBB)にマッチ
使用例
'color: #fff and #1a2b3c'.match(/#[0-9a-fA-F]{3,6}/g)実行結果
['#fff', '#1a2b3c']\d{3}-\d{4}日本の郵便番号(例: 123-4567)にマッチ
使用例
/\d{3}-\d{4}/.test('123-4567')実行結果
true正規表現チートシートとは
正規表現チートシートは、正規表現の構文を素早く確認できるリファレンスです。アンカー、量指定子、文字クラス、キャプチャグループ、先読み・後読みアサーション、フラグまで主要な構文を網羅しています。メール・URL・IPアドレス・日付など実務でよく使うパターンも収録。各パターンに使用例と実行結果を掲載しています。
主な機能
- 7カテゴリ・40以上の正規表現パターンを収録
- 各パターンに使用例と実行結果を掲載
- カテゴリ別フィルタリング(アンカー、量指定子、文字クラスなど)
- パターン名・説明文のリアルタイム検索
- ワンクリックでパターンをコピー
こんな場面で役立ちます
- コーディング中に正規表現の構文をすぐ確認したいとき
- 正規表現の基礎から特殊構文まで学習したいとき
- メール・URL・日付バリデーションのパターンをコピーしたいとき
- 先読み・後読みアサーションの使い方を見直したいとき
- コードレビューやペアプロ中のリファレンスとして
よくある質問
* と + の違いは何ですか?
* は0回以上、+ は1回以上の繰り返しにマッチします。たとえば /ab*c/ は 'ac'、'abc'、'abbc' にマッチしますが、/ab+c/ は 'abc'、'abbc' にはマッチしても 'ac' にはマッチしません。
キャプチャグループ (...) と非キャプチャグループ (?:...) の違いは?
キャプチャグループはマッチした内容を保持し、置換時に $1、$2 などで参照できます。非キャプチャグループは優先順位や量指定子のためにグループ化するだけで、マッチ内容を保持しないため処理効率が高いです。
先読み (?=...) と後読み (?<=...) の違いは?
先読み (?=...) は現在位置の直後に指定パターンが続く場合のみマッチします。後読み (?<=...) は直前に指定パターンがある場合のみマッチします。どちらも文字を消費しないゼロ幅アサーションです。
g フラグは何をしますか?
g(グローバル)フラグを付けると、最初のマッチで停止せず文字列内のすべてのマッチを検索します。g フラグなしの String.match() は最初のマッチだけを返します。
ドット(.)や他の特殊文字をリテラルとして使うには?
バックスラッシュでエスケープします。たとえば \. はリテラルのドット、\( はリテラルの括弧、\* はリテラルのアスタリスクにマッチします。エスケープなしの . は改行以外の任意の1文字にマッチします。
