メインコンテンツへスキップ
Toolsbase Logo

正規表現チートシート

正規表現の構文をカテゴリ別にまとめたチートシート。アンカー、量指定子、文字クラス、グループ、フラグ、よく使うパターンを検索・コピーできます。

最終更新:

使い方

使い方を開く
  1. 1

    検索またはカテゴリでフィルタ

    検索欄にパターンやキーワードを入力するか、カテゴリボタン(アンカー、量指定子など)をクリックして絞り込みます。

  2. 2

    説明と使用例を確認

    各パターンの説明・使用例・実行結果を確認して、パターンの動作を理解します。

  3. 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']

u
Unicode: サロゲートペアを含む完全な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')

実行結果

true

https?:\/\/[\w\-._~:/?#\[\]@!$&'()*+,;=%]+
HTTPまたはHTTPSのURLにマッチ

使用例

/https?:\/\/.+/.test('https://example.com')

実行結果

true

0\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})\b
CSSの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文字にマッチします。