すべての開発者が習得すべきの正規表現パターン
正規表現(regex)は開発者ツール箱中最も強力のツールの一つ。それ们許可するあなた用简洁のパターン来検索する、検証すると変換する文本,そしてこれらの操作するもし用たことがある程式コードかもしれない必要とする数十行。だが正規表現構文乍看以下かもしれない晦涩難わかる,しかし掌握一组核心パターンすぐにできるオーバーライド绝大多数の实际ユースケース。このガイド介绍たあなたする繰り返し使用の正規表現パターン,かつ詳細説明する各パターンの工作原理。
正規表現の基礎の復習
で深く具体的パターン前に,ここ高速回顾一下構成するすべての正規表現パターンベースメタ文字:
| メタ文字 | 意味 | 例 |
|---|---|---|
| . | 任意の1文字 | a.c マッチする abc、a1c、a c |
| * | 前の文字の0回以上の繰り返し | ab*c マッチする ac、abc、abbc |
| + | 前の文字の1回以上の繰り返し | ab+c マッチする abc、abbc |
| ? | 前の文字の0回または1回 | colou?r マッチする color、colour |
| ^ | 文字列の先頭 | ^Hello マッチする開头の Hello |
| $ | 文字列の末尾 | world$ マッチする结尾の world |
| [] | 文字クラス | [aeiou] マッチする任意元音字母 |
| () | キャプチャグループ | (ab)+ マッチする ab、abab |
| | | 交替(OR) | cat|dog マッチする cat または dog |
| \d | 数字 [0-9] | \d{3} マッチする 123 |
| \w | 単語文字 [a-zA-Z0-9_] | \w+ マッチする hello_123 |
| \s | 空白文字 | a\sb マッチする a b |
1. メールアドレス検証
基本的なメールアドレスパターン
此パターン検証するメールに址の基本结构:@ 前あり一つのまたは多个許可するの字符,後跟少なくともを含む一つの点号の域名,ならびに两个またはより多字母の顶级域名。それできる捕获大多数の無効フォーマット,同時に許可する正当に址を通じて。
マッチする:user@example.com、john.doe+tag@company.co.uk
マッチしない:user@、@example.com、user@.com
2. URL検証
HTTP/HTTPS URLパターン
此パターンマッチする带あり可选 www 前缀の HTTP と HTTPS URL,を含む域名と可选路径。s? させる https 中の "s" に変わる可选,(www\.)? させる www 前缀に変わる可选。路径段 (\/[^\s]*)? 許可する域名後出现除空白文字外の任意の字符。
マッチする:https://example.com、http://www.example.com/path/to/page
マッチしない:ftp://example.com、example.com(なしプロトコル)
3. 電話番号検証
国際電話番号
此パターン従う E.164 国際電話番号フォーマット。それ許可する可选の + 前缀,要件第一位数値のために 1-9(なし前导零),总共最も多許可する 15 位数値。これは国际上保存すると検証する电话号码最も信頼できるのフォーマット。
マッチする:+14155552671、442071838750
マッチしない:+01xxxxxxxxx、123
4. パスワード強度
強力なパスワードパターン
此パターン強制実行する強パスワードポリシー:少なくとも 8 个字符,を含む少なくとも一つの小写字母、一つの大写字母、一つの数値と一つの特殊字符。(?=.*[...]) 構文使用肯定先読み来確認する毎種類文字クラス型の存で,そして不消耗字符。
マッチする:MyP@ss1word、Str0ng!Pass
マッチしない:password、Password1、P@ss
5. IPアドレス検証
IPv4アドレス
此パターン検証する IPv4アドレスかつ入行正しくの範囲確認する。各八位组必須で 0 まで 255 の間。该パターン使用交の代わりにマッチする:250-255(25[0-5])、200-249(2[0-4]\d)または 0-199([01]?\d\d?)。これで三个点号後重复三次,それから最後に一次に使用される最も终の八位组。
マッチする:192.168.1.1、10.0.0.1、255.255.255.0
マッチしない:256.1.1.1、192.168.1、192.168.1.1.1
6. 日付フォーマット検証
YYYY-MM-DD (ISO 8601)
此パターン検証する ISO 8601 フォーマット(YYYY-MM-DD)の日付。それ確認する四位数の年份、01-12 の間の月と 01-31 の間の日付。ご注意ください,此パターン検証するフォーマットしかし不検証する日付の逻辑有効性(例えば,それ許可する 2026-02-31)。する必要がある入行完全検証する,请解析する日付かつもってプログラミング方式確認する。
マッチする:2026-05-20、2025-01-01、2024-12-31
マッチしない:2026-5-20、2026-13-01、26-05-20
7. 16進数カラーコード
CSS 16進数カラー
此パターンマッチする CSS 16進数カラーコード,を含む 3 位简写(#fff)と 6 位完全形式(#ffffff)。{1,2} 数量詞許可する 3 位16進数数値组の 1 次または 2 次重复,同時に支持する两種類フォーマット。
マッチする:#fff、#FF5733、#1e293b
マッチしない:fff、#ff、#1234567
8. スラッグ / URLセーフ文字列
URLスラッグパターン
此パターン検証する URL slug:もって连字符のために分隔符の小写字母数値文字列。それ確保するない前导または尾随连字符,もない连续连字符。これ種類フォーマット正 SEO 友良,可安全に使用される URL、ファイル名と标识符。
マッチする:my-blog-post、regex-patterns-guide、tool123
マッチしない:My-Post、-slug、slug-、my--post
9. クレジットカード番号
一般的なクレジットカードパターン
此パターン検証する主にクレジットカード番号:Visa(もって 4 開头,13 または 16 位)、Mastercard(もって 51-55 開头,16 位)、American Express(もって 34 または 37 開头,15 位)と Discover(もって 6011 または 65 開头,16 位)。する此と Luhn アルゴリズム組み合わせる使用もって完了する完全検証する。
10. HTMLタグマッチング
HTMLタグ抽出
此パターンマッチする带あり内容の開闭 HTML タグ。第一つのキャプチャグループ ([a-z][a-z0-9]*) 捕获タグ名,後方参照 \1 確保する闭タグと開タグマッチする。(.*?) 使用懒惰マッチする捕获タグの間の内容,もって獲得する最も短マッチする。
より良い正規表現を書くコツ
- シンプルに始める:先编写最も基本のパターンバージョン,それから段階的に増やす複雑性。毎一步すべて入行テストする。
- 文字クラスを使う:[a-z] 比 (a|b|c|...|z) より明確に。命名する类如 \d、\w と \s 可向上させる可読性。
- 遅延数量詞を優先:時にあなた必要とする最も短マッチする时,使用 *? と +? 代の代わりに * と +,もって避ける贪婪過度のマッチする。
- アンカーを使う:検証するパターン常に使用 ^ と $,確保する全体の文字列マッチする,そしてだけでなく仅は子文字列。
- 壊滅的なバックトラッキングを避ける:嵌套数量詞如 (a+)+ かもしれないをもたらす某些入力するの指数级時間複雑度。で利用可能时使用原子组または占あり数量詞。
- 複雑なパターンにコメントを付ける:使用 x 标志(詳細パターン)のために複雑パターン追加するスペースとコメント。
したいする必要があるインタラクティブテストするこれらの正規表現パターン?無料の正規表現テストするツール,支持するリアルタイムマッチする、キャプチャグループ可視化するとパターン説明する。
正規表現をテストよくある質問
とは正規表現パターン?
正規表現パターンは定義する検索するパターンの字符序列。それに使用される文字列マッチする、検証する、検索する置換する操作すると文本解析する。正規表現パターン使用 .、*、+、?、[]、() と {} など特殊メタ文字来定義する柔軟のマッチする规すなわち。
私すべき用正規表現検証するメールか?
使用正規表現入行基本のメールフォーマット検証(確認する @ 符号、域名结构),しかし不する必要がある试图仅用正規表現完全検証するメールに址。メール仕様(RFC 5322)極めて複雑,ない正規表現できる完美検証するすべての有効に址。で生产環境中,应する基本正すなわち検証すると实际メールアドレス検証(送信する確認リンク)組み合わせる使用。
貪欲数量詞と遅延数量詞違いは何か?
貪欲数量詞(*、+)尽かもしれない多にマッチする文本,そして遅延数量詞(*?、+?)尽かもしれない少にマッチする文本。例えば,適用する于 'aabb' 时,贪婪パターン a.*b マッチする 'aabb'(全体の文字列),そして懒惰パターン a.*?b 仅マッチする 'aab'(最も短マッチする)。
どのようにテストする正規表現パターン?
使用オンライン正規表現テストするツール(如 ToolHub 正規表現テスター)インタラクティブにテストするパターン。これらのツールリアルタイムハイライトするマッチする結果,表示するキャプチャグループ,かつ説明するパターン各部分的にの機能。
異なるプログラミング言語の正規表現はいいえ同じ?
大多数の正規表現構文で言語间は共享の,しかし高级特徴存で差异。JavaScript で旧バージョンエンジン中非対応回顾断言,Python 使用と JavaScript 異なるの命名する组構文,PCRE(PHP)比大多数の其彼エンジン支持するより多特徴。务必で目标言語中テストするパターン。