完全無料

正規表現を テスト

ブラウザで正規表現を即座にテスト・デバッグ。マッチのハイライト、キャプチャグループの確認、置換モードをすべて無料でプライベートに利用できます。

//g
フラグ:

このツールについて

正規表現は、テキスト内のパターンを照合するためのドメイン固有の言語です。これらは 1968 年以来コンピューティングの一部であり、現在ではすべての最新のプログラミング言語、テキスト エディター、コマンド ライン検索ツールに組み込まれています。構文は簡潔ですが、エラーが発生しやすくなっています。小さな変更により、一致動作が微妙に異なり、複雑な式はすぐに読めなくなります。パターンの編集中にリアルタイムで一致を表示するテスターは、正規表現を開発および検証する最も効果的な方法です。

このテスターは、JavaScript 正規表現エンジン (アプリケーションがブラウザで実行する場合に使用するものと同じ) を使用してブラウザで実行されます。パターンとテスト テキストは反応的に更新されます。いずれかの変更が行われるたびに、一致が再実行されます。一致グループが強調表示され、キャプチャされたグループがリストされ、フラグ (大文字と小文字を区別しない、複数行、グローバル) がテスト用に公開されます。

正規表現構文はエンジンごとに微妙に異なります。 JavaScript は ECMAScript 仕様に従います。 Python、PCRE (PHP などで使用)、Java、Go にはそれぞれ独自の方言があり、機能は重複していますが同一ではありません。ここで開発されたパターンは ECMAScript 構文を使用します。エンジン間の移植性を実現するには、各ターゲットのドキュメントを確認する必要があります。

Regex Testerを使用する理由

正規表現のバグは、展開後にデバッグするのが難しいことで知られています。合理的であるように見えるパターンでも、意図したよりも多かれ少なかれ一致したり、エッジ ケースで失敗したり、特定の入力で壊滅的なバックトラッキングが発生したりする可能性があります。代表的な入力に対して対話的にパターンをテストすることで、コードのレビューと運用前に問題を発見します。

パターンはドキュメントからも恩恵を受けます。正規表現を、一致する必要がある入力と一致すべきでない入力の横に表示すると、意図が明示されます。将来のメンテナ (6 か月後のあなたも含む) は、巧妙なワンライナーを評価するよりも、文書化されたテスト ケースを評価します。

使い方

パターンを入力し、テスト入力を入力し、ライブで強調表示された一致を確認します。

  1. パターンを入力してください: パターンフィールドに正規表現パターンを入力します。リテラル正規表現 (/pattern/flags) とパターンのみの形式の両方が機能します。フラグは flags 入力を介して設定できます。
  2. テスト入力を追加: パターンが一致する必要があるサンプル テキストを貼り付けます (理想的には、パターンが一致しない必要があるテキストも貼り付けます)。テスターは入力に対してパターンを実行し、一致を強調表示します。
  3. フラグを設定する: 共通フラグ: g (グローバル、すべての一致を検索)、i (大文字と小文字を区別しない)、m (複数行、^ および $ は行の開始/終了に一致)、s (dotall、. は改行に一致)、u (Unicode)。
  4. 結果を検査する: 各一致は入力内で強調表示されます。キャプチャ グループは、グループ インデックスと値とともにリストに表示されます。テスターは、パターン内の一致の数とコンパイル エラーも表示します。

一般的な使用例

技術的な詳細

JavaScript 正規表現は ECMAScript 仕様に従います。主な機能: 文字クラス ([abc]、[^abc])、量指定子 (*、+、?、{n,m})、代替 (|)、グループ化 ((...))、グループのキャプチャと非キャプチャ、先読みと後読み (最新のエンジン)、後方参照、名前付きグループ、Unicode プロパティ エスケープ (u フラグ付き)、エスケープ シーケンスの標準セット。

PCRE および Python との重要な違い: 後読みサポートは JavaScript (2018 以降) で最近追加されました。名前付きグループは (?<name>...) 構文を使用します。一部の Unicode エスケープでは、正しく機能するために u フラグが必要です。言語を越えた使用を目的としたパターンは、各ターゲットのドキュメントと照合して確認する必要があります。

パフォーマンス: バックトラッキング ベースの正規表現エンジン (JavaScript を含むほとんどのエンジン) は、特定の病的パターンに対して壊滅的なバックトラッキングを引き起こす可能性があります。テスターがハングするようなテストは、パターンを単純化する必要があることを示しています。通常は、ネストされた量指定子やあいまいな代替を避けることによって行われます。

ベストプラクティス

よくある質問

このツールはどの正規表現フレーバーをサポートしていますか?
これは、JavaScript の組み込み RegExp エンジンを使用しており、先読み、後読み (最新のブラウザー)、名前付きキャプチャ グループ、Unicode プロパティ エスケープなどの標準構文をサポートします。
正規表現の置換をテストできますか?
はい。置換モードに切り替えて、置換パターンを入力します。キャプチャ グループの後方参照には $1、$2 などを使用でき、名前付きグループには $<name> を使用できます。
ここでの正規表現の一致が Python/PHP とは異なるのはなぜですか?
プログラミング言語が異なれば、正規表現エンジンも若干異なります。 JavaScript は、所有量指定子や一部の PCRE 固有の機能をサポートしていません。コア構文 (文字クラス、量指定子、グループ) は、どの言語でも同じです。
このツールは正規表現パターンを保存しますか?
いいえ、何も保存または送信されません。このツールは完全にブラウザ内で実行されます。正規表現文字列をコピーすることで、パターンをブックマークしたり共有したりできます。
リテラルの特殊文字を照合するにはどうすればよいですか?
バックスラッシュでエスケープします。リテラルのドットと一致させるには: \.リテラルのバックスラッシュと一致させるには: \\。文字クラス [...] 内では、ほとんどの特殊文字は意味を失います。
テスターはサーバー上で実行されていますか?
いいえ。パターンのコンパイルとマッチングは、ネイティブ RegExp オブジェクトを使用してブラウザーで行われます。
非 JavaScript エンジンのパターンをテストできますか?
たいてい。単純なパターンについては、主要なエンジンが一致します。高度な機能 (後読み、原子グループ、所有量指定子、Unicode プロパティ エスケープ) については、ターゲット エンジンのドキュメントを確認してください。
非常に大きな入力を処理できますか?
数メガバイトまではスムーズに動作します。入力が大きくなると、特にバックトラッキングが発生しやすいパターンの場合、ブラウザの速度が低下したりハングしたりする可能性があります。