正規表現クイックリファレンスとよく使うパターン
正規表現,または称 regex,はほとんどすべてのプログラミング言語と文本編集する器中使用の強力パターンマッチするツール。だが構文乍看以下かもしれない晦涩難わかる,しかし掌握正規表現できるさせるあなたもって精密にの方式検索する、検証する、提取と変換する文本,そしてこれらの操作する用たことがある程式コードかもしれない必要とするいくつ十行ようやくできる実装する。このガイドではたあなた理解する必要がありますの基本構文、よく使うパターンと実用的なヒント。
基本正規表現構文クイックリファレンス
文字クラス
| パターン | 意味 | 例 |
|---|---|---|
| . | 改行以外の任意の文字 | a.c マッチする abc、a1c、a c |
| \d | 任意の数字(0-9) | \d\d マッチする 42 |
| \D | 任意の非数字 | \D マッチする a、!、スペース |
| \w | 単词字符(a-z、A-Z、0-9、_) | \w+ マッチする hello_123 |
| \W | 非単語文字 | \W マッチする @、#、スペース |
| \s | 空白文字(スペース、制表符、改行符) | a\sb マッチする a b |
| \S | 非空白文字 | \S+ マッチする hello |
| [abc] | セット内の任意の文字 | [aeiou] マッチする元音字母 |
| [^abc] | セットにない任意の文字 | [^0-9] マッチする非数値 |
| [a-z] | 文字範囲 | [A-Za-z] マッチする任意字母 |
数量詞
| パターン | 意味 | 例 |
|---|---|---|
| * | 0回以上 | ab*c マッチする ac、abc、abbc |
| + | 1回以上 | ab+c マッチする abc、abbc |
| ? | 0回または1回 | colou?r マッチする color、colour |
| {n} | ちょうどn回 | \d{4} マッチする 4 位数値 |
| {n,} | n回以上 | \d{2,} マッチする 2 位およびもって上数値 |
| {n,m} | n回からm回 | \d{3,5} マッチする 3-5 位数値 |
アンカーと境界
| パターン | 意味 | 例 |
|---|---|---|
| ^ | 文字列または行の先頭 | ^Hello マッチする開头の Hello |
| $ | 文字列または行の末尾 | world$ マッチする结尾の world |
| \b | 単語境界 | \bcat\b マッチする単独の cat |
| \B | 非単語境界 | \Bcat マッチする scattered |
グループ化と交替
| パターン | 意味 | 例 |
|---|---|---|
| (abc) | キャプチャグループ | (ab)+ マッチする abab |
| (?:abc) | 非キャプチャグループ | (?:ab)+ マッチする abab |
| a|b | 交替(OR) | cat|dog マッチする cat または dog |
| \1 | グループ1への後方参照 | (\w)\1 マッチする aa、bb |
| 名前付きキャプチャグループ | もって name 引用する |
よく使う正規表現パターン
もって下は Web 開発するとデータ検証中最も常用の正規表現パターン:
メールアドレス検証
一つの实用の电子邮件正規表現,できる捕获大多数の無効に址そしてできないたことがある于严格:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ 。此パターン検証する基本の电子邮件结构,同時に許可する本に部分的に中の常见字符,かつ要件を持つ少なくとも两个字符の TLD の有効域名。
URL検証
マッチする HTTP と HTTPS URL:^https?:\/\/(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$ 。此パターンマッチする带あり可选 www 前缀、域名と可选路径の URL。
電話番号(米国)
美国电话号码の各種類フォーマット:^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$ 。此パターン処理する (555) 123-4567、555-123-4567 と 5551234567 などフォーマット。
IPアドレス(IPv4)
検証する IPv4アドレス:^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$ 。此パターン確保する各八位组で 0 まで 255 の間。
日付(YYYY-MM-DD)
ISO 日付フォーマット:^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ 。此パターン検証するフォーマット结构しかし不確認する毎月の有効日付。
16進数カラーコード
マッチする CSS 16進数カラー:^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ 。此パターンマッチする 3 位简写(#fff)と 6 位(#ffffff)フォーマット。
高度なテクニック
先読みと後読み
先読みと後読み断言させるあなた仅でパターン後面(または前面)あり(またはない)另一つのパターン时ようやくマッチする,そして不する周围の文本を含むでマッチする結果中。
- 肯定先読み (?=pattern):仅でパターンで後面时マッチする。例:\d(?=px) 仅マッチする "px" 前面の数値。
- 否定先読み (?!pattern):仅でパターン不で後面时マッチする。例:\d(?!px) マッチする不で "px" 前面の数値。
- <=pattern):仅でパターンで前面时マッチする。例:(?<=\$)\d+ マッチする美元符号後面の数値。
貪欲マッチと遅延マッチ
<.*>bold<.*?>"。
正規表現パフォーマンスのヒント
- マッチしたグループ内容を抽出する必要がない場合使用非キャプチャグループ (?:)
- サポートされている場合は絶対最大量指定子を使用または原子组来避ける過度の回溯
- 具体的な文字クラスを使用そして非広く使用点メタ文字
- 文字列全体をマッチさせる必要がある場合用 ^ と $ 锚定あなたのパターン
- ループ内で繰り返し使用する場合预コンパイル正規表現パターン
- 大きなテキスト内で検索する場合使用词边界 \b 代の代わりに ^ と $
正規表現のテストとデバッグ
でデプロイする正規表現パターン前に,务必使用真实入力する入行テストする。使用できるリアルタイムハイライトするマッチするかつ説明するパターン各部分的にのインタラクティブ正規表現テスター。これに役立つあなた捕获エッジケースかつ理解するパターンのために何マッチするまたはマッチしない特定入力する。無料の正規表現テスター,インタラクティブに構築するとテストするあなたのパターン。
よくある質問
贪婪と懒惰正すなわちマッチする違いは何か?
貪欲数量詞マッチする尽かもしれない多の文本,そして遅延数量詞マッチする尽かもしれない少の文本。で数量詞後追加する问号させる其に変わる懒惰の。例えば,.* マッチする最も長のかもしれない文字列,そして .*? マッチする最も短の。
正規表現ですべてのプログラミング言語中すべて一样か?
不,正規表現の実装する因言語そして异。大多数の支持する基本の POSIX 構文,しかし高级機能如後顾、命名する组と Unicode 支持するあり所異なる。JavaScript 历史上正正規表現の支持するあり限,しかし近年来已追加するた多くの機能。
正規表現できる解析する HTML または XML か?
不,正規表現なし法信頼できるに解析する HTML または XML,なぜならそれ们は嵌套のコンテキストなし閉言語。正規表現ない嵌套奥行きまたは平衡タグの概念。请使用適切にの HTML または XML 解析する器。正規表現できるから HTML 中提取簡単パターン,しかしで複雑结构上できる失敗。
正規表現中の先読みと後読みとは何か?
<=pattern) は肯定後読み,もしパターンで前面すなわちマッチする。いいえ定バージョン使用 ! 代の代わりに =。
どのようにさせる正規表現不区分大小写?
で闭合分隔符後追加する i 标志させる全体のパターン不区分大小写。JavaScript で,使用 /pattern/i。Python で,使用 re.IGNORECASE または re.I として标志。あなたもできる使用 (?i) 内联方式させる特定部分的に不区分大小写。
ToolHub's collection of 300+ free online tools including regex tester, cheat sheets, and more — no sign-up required.