オンラインで正規表現をテストする方法
正規表現はプログラミングでもっとも強力なツールのひとつ — そして習得がもっとも難しいもののひとつでもあります。正規表現テスターを使えば、コードを実行して出力を確認し何が悪いか推測する代わりに、対話的にパターンを構築・デバッグできます。
正規表現テスターを使う理由
エディタで正規表現を書くと、エラーは実行時にしか見えません。テスターは次を表示します:
- ライブハイライト — パターンを入力するそばから、テキストのどの部分がマッチするかが見える
- キャプチャグループ — デバッグコードを書かずに各グループが何をキャプチャしているか確認できる
- マッチの詳細 — 各マッチの正確な位置、長さ、内容
- 置換プレビュー — 検索置換の結果を、実行前に確認できる
オンラインで正規表現をテストする方法
- パターンを入力 — 正規表現をパターンフィールドに入力します。必要に応じてフラグ(g はグローバル、i は大文字小文字を区別しない、m は複数行)を有効にします。
- テストテキストを貼り付ける — テスト対象のテキストを入力します。マッチがリアルタイムでハイライトされます。
- 結果を確認 — すべてのマッチと、その下にキャプチャグループが表示されます。「置換」フィールドで置換のテストもできます。
覚えておきたいよくあるパターン
メールアドレス(基本):
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
URL:
https?://[^\s]+
電話番号(米国):
\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}
日付(YYYY-MM-DD):
\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])
IP アドレス(IPv4):
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
より良い正規表現を書くヒント
- シンプルから始める — まず動く基本パターンを得てから、複雑さを足していきます。最初から完璧な正規表現を書こうとしてもうまくいくことはまれです。
- g(グローバル)フラグを使う — フラグなしだとテスターは最初のマッチで止まります。
gを付ければテキスト内のすべてのマッチが見られます。 - エッジケースをテスト — 明白なケースにはマッチしても、空文字列、特殊文字、境界条件で失敗することがあります。テストテキストにそれらを加えましょう。
- 特殊文字をエスケープ —
.、*、+、?、(、)、[、]、{、}、\、^、$、|は正規表現で特別な意味を持ちます。リテラルにマッチさせるにはバックスラッシュを前に付けます。 - 非キャプチャグループを使う — キャプチャせずにグループ化したいときは、
(...)ではなく(?:...)を使ってください。結果がきれいに保たれます。
よくある質問
私の正規表現は他のプログラミング言語でも動作しますか?
正規表現の構文の大部分は JavaScript、Python、Java、PHP などで共通です。基本パターン(文字クラス、量指定子、アンカー)はどこでも動作します。後読みや名前付きグループのような一部の高度な機能は言語によって異なります。
テストデータはサーバーに送信されますか?
いいえ。すべてのマッチングはブラウザ内で JavaScript ネイティブの RegExp エンジンを使ってローカルに行われます。何も外部に送信されません。
置換をテストできますか?
はい。置換パターン(キャプチャグループには $1、$2 などを使用)を入力すると、検索置換の結果がリアルタイムに表示されます。
オフラインで動作しますか?
はい。ページ読み込み後はインターネット接続なしにブラウザ内で完全に動作します。