正規表現テスター&エクスプレイナー — 無料オンラインツール
リアルタイムのマッチハイライト、グループキャプチャ、わかりやすい説明付きで正規表現をテスト。
チートシート — クリックで挿入
正規表現とは?
正規表現(regexまたはregexp)は、検索パターンを定義する文字のシーケンスです。文字列の検索、検証、テキストの抽出、置換に使用されます。正規表現は事実上すべてのプログラミング言語でサポートされており、テキスト処理を扱うすべての開発者にとって不可欠なツールです。
正規表現構文クイックリファレンス
.— 改行を除く任意の文字にマッチ^/$— 文字列(またはマルチラインモードでは行)の先頭 / 末尾*/+/?— 0回以上 / 1回以上 / 0回または1回{n,m}— n回からm回の繰り返し[abc]— 文字クラス — a、b、またはcにマッチ[^abc]— 否定文字クラス(abc)— キャプチャグループ(?:abc)— 非キャプチャグループ\d/\w/\s— 数字 / 単語文字 / 空白文字a|b— 選択 — aまたはbにマッチ
一般的な正規表現パターン
- メール:
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,} - URL:
https?://[\w\-._~:/?#[\]@!$&'()*+,;=%]+ - IPv4:
(\d{1,3}\.){3}\d{1,3} - 電話番号(US):
(\+1\s?)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4} - 16進カラーコード:
#([a-fA-F0-9]{6}|[a-fA-F0-9]{3}) - 日付(YYYY-MM-DD):
\d{4}-\d{2}-\d{2}
正規表現に関するよくある質問
正規表現の .* と .+ の違いは何ですか?
アスタリスク(*)は前の要素の「0回以上」を意味し、プラス(+)は「1回以上」を意味します。パターン .* は空文字列を含むあらゆる文字列にマッチしますが、.+ は少なくとも1文字必要です。どちらもデフォルトでは貪欲 — できるだけ多くマッチします。? を追加すると最短一致(できるだけ少なくマッチ)になります:.*? と .+?。
正規表現のフラグ g、i、m、s は何をしますか?
g(グローバル)フラグは最初のマッチで止まらずにすべてのマッチを見つけます。i フラグは大文字小文字を区別しないマッチにします。m(マルチライン)フラグは ^ と $ を文字列全体ではなく各行の先頭と末尾にマッチさせます。s(dotAll)フラグはドットを改行文字にもマッチさせます。フラグは必要に応じて組み合わせます:/pattern/gim。
リテラルのドット、括弧、その他の特殊文字にマッチさせるにはどうすればいいですか?
特殊な正規表現文字はバックスラッシュでエスケープします。リテラルのドットは . です(バックスラッシュなしではドットは任意の文字にマッチします)。リテラルの括弧は ( と ) です。エスケープが必要なその他の文字: ^ $ | ? * + { } [ ]。例えば、URL example.com にリテラルでマッチさせるには /example.com/ と書きます — そうしなければドットは任意の文字にマッチしてしまいます。
貪欲量指定子と最短一致量指定子の違いは何ですか?
貪欲量指定子(*、+、{n,m})は全体のパターンがマッチする範囲でできるだけ多くマッチしようとします。最短一致(非貪欲)量指定子(*?、+?、{n,m}?)はできるだけ少なくマッチします。例えば、<b>bold</b> に対して、貪欲な /<.*>/ は文字列全体にマッチしますが、最短一致の /<.*?>/ は <b> のみにマッチします。
関連開発者ツール
- Cron式エクスプレイナー — Cron構文を解析し次の実行時間を確認
- Gitコマンドファインダー — 20以上の一般的なシナリオに対応する正確なGitコマンドを検索
- JWTデコーダー&インスペクター — JWTトークンをデコードし、ヘッダー、ペイロード、クレームを検査
- AIトークンカウンター — GPT-4o、Claude、Geminiのトークン数をカウントしコストを見積もり
- すべての無料開発者ツールを見る