82
100

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

超絶わかりやすい!正規表現で詰まったときのチートシート

Last updated at Posted at 2025-11-10

正規表現って何?

正規表現は「文字列のパターンを探すための記号」です。

例えば「メールアドレスを探したい」「電話番号が正しい形式かチェックしたい」というときに使います。難しそうですが、基本を覚えれば意外と簡単です!

本記事の内容は主要な正規表現エンジン(JavaScript、Python、PHPなど)で共通して使える基本構文を基にしていますが、実装や設定(例: 改行を含むか、Unicode対応かなど)によって動作が異なる場合があります。

【超基本】まずこれだけ覚えよう!

1. . (ドット) = 「なんでもいいから1文字」

パターン: c.t
マッチ: cat, cot, c9t, c@t など

説明: 「c」と「t」の間に何か1文字あればOK

使用例

パターン: 20..年
マッチ: 2023年, 2024年, 20XX年

2. * (アスタリスク) = 「0回以上の繰り返し」

パターン: ca*t
マッチ: ct, cat, caat, caaaat

説明: 「a」が0個でも100個でもOK

覚え方 「*」は「何個でもいいよ(0個でもOK)」


3. + (プラス) = 「1回以上の繰り返し」

パターン: ca+t
マッチ: cat, caat, caaaat
マッチしない: ct (aが0個なのでダメ)

説明: 「a」が最低1個は必要

*との違い

  • * → 0個でもOK
  • + → 最低1個は必要

使用例

パターン: \d+
マッチ: 1, 123, 999999 (1桁以上の数字)

4. ? (疑問符) = 「0回か1回だけ」

パターン: colou?r
マッチ: color, colour

説明: 「u」があってもなくてもOK

使用例

パターン: https?://
マッチ: http://, https://

上記の場合、httpssはあっても無くてもどっちでもOKという意味になります。

【重要】文字の範囲指定

5. [] (角カッコ) = 「この中のどれか1文字」

[abc] → a, b, c のどれか
[0-9] → 0から9のどれか(数字1桁)
[a-z] → aからzのどれか(小文字1文字)
[A-Za-z] → 大文字小文字のアルファベット1文字

ハイフンの意味 [0-9]は「0,1,2,3,4,5,6,7,8,9」の省略形

使用例

[0-9][0-9][0-9] → 123, 456 (3桁の数字)
[あ-ん]+ → あいうえお, ひらがな (ひらがなの連続)

6. [^] = 「この中 "以外" の1文字」

[^0-9] → 数字"以外"の1文字
[^a-z] → 小文字アルファベット"以外"の1文字

注意 角カッコの中の最初に^を書くと「〜以外」の意味になります

【便利】ショートカット記号

毎回[0-9]と書くのは面倒なので、省略形があります。

記号 意味 同じ意味
\d 数字1文字 [0-9]
\D 数字以外1文字 [^0-9]
\w 英数字とアンダースコア [A-Za-z0-9_]
\W 英数字とアンダースコア以外 [^A-Za-z0-9_]
\s 空白文字(スペース、タブなど)
\S 空白文字以外

覚え方 小文字は「〜を表す」、大文字は「〜以外」

使用例

\d{3}-\d{4} → 123-4567 (郵便番号っぽい並びを探すときとかに使う)
\w+@\w+ → user@example (メアドっぽい並びを探す)

【重要】繰り返し回数の指定

7. {} (波カッコ) = 「繰り返し回数を指定」

a{3} → aaa (ちょうど3回)
a{2,5} → aa, aaa, aaaa, aaaaa (2〜5回)
a{3,} → aaa, aaaa, aaaaa... (3回以上、上限なし)

使用例

\d{3}-\d{4}-\d{4} → 090-1234-5678 (電話番号)
[a-z]{5,10} → apple, banana (5〜10文字の英単語)

【重要】位置の指定

8. ^$ = 「先頭」と「末尾」

^hello → "hello world"の hello にマッチ(先頭のみ)
         "say hello"の hello にはマッチしない

world$ → "hello world"の world にマッチ(末尾のみ)
         "world peace"の world にはマッチしない

重要な使い方

^\d+$ → 文字列全体が数字だけで構成されてる場合にマッチ
       "123"にマッチ、"abc123"にマッチしない

^$を両方使うと 「完全一致」 になります!

【便利】グループ化と選択

9. () (丸カッコ) = 「グループ化」

(abc)+ → abc, abcabc, abcabcabc
説明: 「abc」というまとまりを繰り返す

グループ化しないとこうなる↓

abc+ → abc, abcc, abccc
説明: cだけが繰り返される

10. | (パイプ) = 「または」

cat|dog → cat または dog
(月|火|水)曜日 → 月曜日, 火曜日, 水曜日

【注意】エスケープ

正規表現で特別な意味を持つ文字を、普通の文字として使うときは前に\をつけます。

\. → ピリオド「.」そのもの
\* → アスタリスク「*」そのもの
\$ → ドル記号「$」そのもの

エスケープが必要な文字

. * + ? ^ $ { } [ ] ( ) | \

よくある例

example\.com → example.com にマッチ
(エスケープしないとexampleXcomなどもマッチしてしまう)

(これは正規表現の一部じゃなくて、ただの文字ですよ~ということを認識させるために、
文字として扱いたい記号の前には必ず「\」を入れましょう!)

【実践】段階的に学ぶ例

例1: メールアドレス

ステップ1 基本

\w+@\w+ → user@example

ステップ2 ドメイン追加

\w+@\w+\.\w+ → user@example.com

ステップ3 より厳密に

[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
→ user.name+tag@example.co.jp

例2: 電話番号

ステップ1 ハイフンあり

\d{3}-\d{4}-\d{4} → 090-1234-5678

ステップ2 ハイフン省略可

\d{3}-?\d{4}-?\d{4} → 09012345678 もOK

例3: 日付

ステップ1 基本形

\d{4}-\d{2}-\d{2} → 2024-12-25

ステップ2 スラッシュも対応

\d{4}[-/]\d{2}[-/]\d{2} → 2024/12/25 もOK

【応用】貪欲マッチと非貪欲マッチ

貪欲マッチ(デフォルト)

文字列: <div>内容1</div><div>内容2</div>
パターン: <div>.*</div>
結果: 全体がマッチしてしまう

*+は「できるだけ多く」マッチしようとします。


非貪欲マッチ(?を追加)

文字列: <div>内容1</div><div>内容2</div>
パターン: <div>.*?</div>
結果: 個別にマッチする

*?+?は「できるだけ少なく」マッチします。

よく使うパターン集

数字のみ: ^\d+$
英字のみ: ^[A-Za-z]+$
英数字のみ: ^[A-Za-z0-9]+$

電話番号: \d{2,4}-?\d{2,4}-?\d{4}
郵便番号: \d{3}-?\d{4}
メール: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

日付(YYYY-MM-DD): \d{4}-\d{2}-\d{2}
日付(YYYY/MM/DD): \d{4}/\d{2}/\d{2}
時刻(HH:MM): \d{2}:\d{2}

URL: https?://[\w\-\.]+\.[a-z]{2,}

動作確認で便利なツール

regex101.com (超おすすめ!)

  • リアルタイムでマッチ結果が見える
  • どの部分がマッチしているか色付きで表示
  • 各記号の意味も表示される

使い方

  1. regex101.comにアクセス
  2. 上の欄に正規表現を入力
  3. 下の欄にテストしたい文字列を入力
  4. 結果が右上に表示される

image.png

まとめ

  1. . → 何か1文字
  2. + → 1回以上繰り返し
  3. [0-9] → 数字1文字 (または \d)
  4. {3} → ちょうど3回
  5. ^$ → 先頭と末尾

この5つを覚えれば、基本的なパターンは書けます!

82
100
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
82
100

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?