正規表現テスター:オンラインで正規表現を作成、テスト、デバッグ
正規表現は、手動の文字列操作では決して達成できない精度でテキストを検索、抽出、検証、置換できるパターンマッチング言語です。しかし、正規表現を書くのは難しいものです——1つの量指定子の置き間違いが、正確なパターンをパフォーマンスの爆弾やサイレントな不一致に変えてしまいます。当正規表現テスターでは、パターンを記述し、テストデータを貼り付けるか入力し、入力に応じてリアルタイムでマッチがハイライトされます。デフォルトでJavaScript(ECMAScript 2024)構文をサポートし、PCRE2(PHP)、Python 3、Java、.NETの各フレーバーに切り替え可能です。各フレーバーは、後読み、Unicodeプロパティエスケープ、バックトラッキング制御などの機能の処理が異なります。このツールはキャプチャグループを異なる色で視覚化し、最初のマッチの正確な文字位置を特定し、壊滅的なバックトラッキングのリスクがある場合に警告します(例:(a+)+b を "aaaaaaaaac" に対してマッチさせると、25文字でスレッドがフリーズし、30文字では宇宙の年齢よりも長い時間がかかる可能性があります)。フォームの検証ルールを作成する場合、ログファイルを解析する場合、検索と置換でコードをリファクタリングする場合のいずれにおいても、インタラクティブに正規表現をテストすることで時間を節約し、コストのかかるエラーを防ぎます。
正規表現テスター
無料 · 登録不要
ステップバイステップガイド
正規表現パターンを記述
パターンフィールドに正規表現を入力します。このツールはリテラル正規表現(スラッシュで囲まれた形式、例:/pattern/g)または裸のパターン文字列を受け付けます。クイックリファレンスサイドバーには、文字クラス(\d, \w, \s)、量指定子(*, +, ?, {n,m})、アンカー(^, $, \b)、グループ(キャプチャ、非キャプチャ、名前付き)などの一般的なトークンが表示されます。トークンにホバーすると、その意味と例がツールチップに表示されます。
テストデータを貼り付けてマッチを確認
サンプルのAPIレスポンス、ログ出力、ユーザー入力、コードなどのテストテキストをテストデータエリアに貼り付けます。パターンを入力または修正すると、マッチがリアルタイムでハイライトされます。各キャプチャグループは色分けされます:グループ0(完全マッチ)は青、グループ1は緑、グループ2はオレンジ、名前付きグループは凡例に名前が表示されます。マッチ位置(開始/終了インデックス)が下に表示されます。
フラグと正規表現フレーバーを切り替え
チェックボックスでフラグを有効にします:g(グローバル——最初のマッチだけでなくすべて検索)、i(大文字小文字区別なし)、m(マルチライン——^ と $ が文字列全体の先頭/末尾だけでなく行境界でもマッチ)、s(dotall——. が改行文字にもマッチ)、u(Unicode——\u{...}とUnicodeプロパティエスケープを有効化)、y(スティッキー)。ドロップダウンで正規表現エンジンのフレーバーを切り替え、対象環境でパターンが正しく動作することを確認します。
ヒントとベストプラクティス
正規表現のパフォーマンスキラーで最も一般的なのは壊滅的なバックトラッキングです——ネストされた量指定子を持つパターン(例:(a+)+b)が、失敗する前に入力を分割するあらゆる可能な方法を試行する現象です。25文字の"a"の入力では3300万回以上のバックトラッキングステップが必要になります。エンジンがサポートしている場合は、絶対最大量指定子(a++b)やアトミックグループ((?>a+)b)を使用するか、より具体的なパターンに書き換えることで修正します。
遅延量指定子(*?, +?, ??, {n,m}?)は、可能な限り多くではなく、可能な限り少なくマッチします。区切られたコンテンツをマッチさせる際に必須です——例えば、/<p>.*?<\/p>/ は最初の<p>から最後の</p>まで(貪欲な .* の場合)ではなく、各段落タグのペアをマッチします。
先読みと後読みのアサーションにより、コンテキストをマッチに含めずに、テキストの前後にあるものに基づいてマッチできます。肯定先読み:/foo(?=bar)/ は「bar」が後に続く場合のみ「foo」にマッチします。否定後読み:/(?<!\\)\$/ はバックスラッシュが前にない場合のみドル記号にマッチします。JavaScriptはES2018で後読みのサポートを追加しました。
名前付きキャプチャグループは正規表現を劇的に読みやすくします。数値グループ参照の /(\d{4})-(\d{2})-(\d{2})/ の代わりに、/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/ を使用し、match.groups.year のように名前でグループを参照します。Python、JavaScript、PCRE、.NETのすべてがこの構文をサポートしています。
Unicodeプロパティエスケープ(\p{...})を使用すると、すべての文字を個別に列挙することなく、文字クラス全体にマッチできます。例えば、\p{Script=Han}は任意の漢字にマッチし、\p{Emoji}は絵文字にマッチし、\p{Lu}は任意の文字体系の大文字にマッチします。これはUnicode範囲を手動で列挙しようとするよりもはるかに堅牢です。
メール検証において、RFC 5322に準拠した唯一の正しい正規表現は200文字を超え、それでも完全ではありません。実用的なフォーム検証では、最初のパスとして /^[^\s@]+@[^\s@]+\.[^\s@]+$/ のような単純なパターンを使用し、その後確認メールを送信します。正規表現でメール仕様のすべてのエッジケースを検証しようとしないでください——それはその仕事に適したツールではありません。
フラグは正規表現の動作を大きく変えます。gフラグはグローバル検索(複数マッチ)を実行します。これがない場合、最初のマッチのみが返されます。uフラグは完全なUnicodeサポートを有効にします——これがないと、/\w{2,}/ のようなパターンが非ASCII文字に対して予期しない動作をする可能性があります。Unicodeが必要ないと確信している場合を除き、最新のJavaScript正規表現では常にuフラグを設定してください。
ハッピーパスの入力だけでなく、エッジケースに対しても正規表現をテストしてください。空文字列、特殊文字のみの文字列、最大長の文字列、Unicodeテキストはすべて欠陥を露呈させる可能性があります。正規表現テスターではテストケースセットを保存し、パターンに対して一度にすべて実行できます。
よくある質問
正規表現は開発者のツールキットの中で最も強力なツールの1つであり——同時に最もエラーが発生しやすいツールでもあります。インタラクティブなテストは、サイレントな不一致、バックトラッキングの爆弾、クロスエンジンの非互換性が本番環境に到達する前に検出します。当無料正規表現テスターは4つの主要エンジンフレーバーをサポートし、完全にブラウザ内で動作します。今すぐパターンのテストを始めてください。
このツールを無料で試す →open_in_new