正規表現テスターの使い方
正規表現は、テキストから「この形だけ抜く」「この形を別の形に置き換える」ときの道具です。いきなりエディタや本番DBで一括置換すると、想定外の行まで書き換わる事故が起きやすいので、まず小さなサンプルで当たりを付けるのが定石です。 正規表現テスター は、パターンのマッチ位置、キャプチャグループ、置換プレビューをブラウザ内で即確認できます。入力はサーバに送りません。
正規表現テスターで試す前に
本番の一括置換やバリデーションを書く前に、10〜30行のサンプルだけをテスターに貼り、「想定どおりの行だけ」がマッチするかを確認する習慣が事故を減らします。 特にメールアドレスや電話番号は、正規表現1本で完全捕捉しようとすると保守が難しくなりがちです。まずは明らかな形式だけ拾い、例外は別処理に回す設計も検討してください。
このツールでできること・できないこと
できることは、JavaScript(ECMAScript)の正規表現として、パターンが有効かどうかの確認、マッチ件数とマッチ文字列の一覧、キャプチャ(括弧で囲んだ部分)の取り出し、置換テンプレートのプレビュー、日本語向けサンプル(郵便番号・電話・メール・URL・全角カタカナなど)の読み解きです。
できないことは、Python・Perl・.NET・MySQLなど別エンジンとの完全一致の保証、超巨大ファイルの高速処理、本番データの自動修正、セキュリティ監査です。エンジンが違うと、\d の扱いや後読みの可否、エスケープの書き方が変わります。最終確認は実行環境のドキュメントと実データで行ってください。
基本の手順
- 正規表現テスターを開く
- 目的に近いサンプルを選ぶか、パターン欄と「対象テキスト」欄に手入力する
g/i/m/s/uなど必要なフラグをオンにする- マッチ件数・ハイライト・キャプチャ一覧を見る。置換を試す場合は置換文字列を入れ、プレビューを確認
- 問題なければ、エディタやスクリプトへパターンをコピー(その環境でも再テスト)
フラグの目安
- g(global) … 最初の1件で止めず、全文からすべて拾う。件数確認に必須
- i(ignoreCase) … 英字の大文字小文字を区別しない。
ABCとabcを同じ扱い - m(multiline) …
^/$を行の先頭・末尾として扱う。ログの行単位抽出向け - s(dotAll) …
.が改行にもマッチ。複数行にまたがるブロックを拾うとき - u(unicode) … サロゲートペアや Unicode プロパティ(
\p{…})向け。全角カナのサンプルでは付けることが多い
フラグは組み合わせ可能です。「マッチしないのにパターンは合っているはず」というときは、u の有無と、対象テキストの全角半角を疑ってください。
実務で使う場面の例
- CSVやログの整形 … 日付だけ、IPだけ、エラーコードだけを抜く前に、数十行で試す
- 入力チェックの下書き … 郵便番号やメールの「だいたいこの形」を確認。本番ルールは仕様書が正
- 置換の事前確認 …
$1や\1でキャプチャを並べ替える前に、プレビューで破壊的変更がないか見る - 日本語混在テキスト … 全角数字と半角数字が混在するデータを、全角半角変換で揃えてからパターンを当てる
サンプルパターンの読み方
ツールに載っている郵便番号・電話・メール・URLの例は、学習と簡易マッチ向けです。070/080/090以外の番号、国際電話、新しいドメイン、IDN、省略URLなど、実データは例外だらけです。 「サンプルにマッチした=フォームで合格」とは限りません。逆に、サンプルにマッチしないからといってパターンが間違いとは限らず、フラグやエスケープの問題であることも多いです。
よくある失敗
- 括弧・バックスラッシュの閉じ忘れ … 「無効な正規表現」と出たら、まず括弧の対応と
\\の数を確認 uなしで\p{を使う … SyntaxError になる。Unicode系はuを付ける- 貪欲すぎる
.*… 意図より長くマッチする。.*?や具体的手前の文字で範囲を絞る - ログ全文を貼る … 数万行でブラウザが重い。該当行だけ切り出して試す
- PHP/Pythonの記法をそのまま貼る … 後読みの可否、
(?P<name>)など方言差あり。JS用に書き直す - 置換をいきなり本番実行 … プレビューと件数、バックアップなしの一括置換は避ける
キャプチャと置換のコツ
括弧 ( ) で囲んだ部分がキャプチャグループです。1番目は $1 や \1 で置換文字列に差し込めます。 名前付きグループ (?<name>…) も JavaScript では使えますが、エディタによってはハイライトされないので、テスターでグループ番号を確認してから本番へ持っていくと安全です。 置換で「マッチ全体を消す」より「一部だけ残す」パターンが多いので、まず g フラグ付きで件数を数え、想定より多い/少ないときは貪欲マッチを疑ってください。
行頭・行末は、ログ1行ずつ処理するとき m フラグが効きます。CSVの列を分解するときは、区切り文字が固定かどうかもセットで確認し、カンマを含むフィールドは単純な split 相当の正規表現だけでは壊れやすい点に注意してください。
前処理と後処理
マッチ結果の文字数を数えたいときは、抜き出した文字列を 文字数カウント に貼れます。半角カナや全角英数が混在するCSVは、 全角半角変換 や 半角カナ変換ガイド で揃えてから正規表現を当てると、パターンが単純になります。
よくある質問
どのエンジンですか?
ブラウザの JavaScript(ECMAScript)正規表現です。実行環境が違えば挙動も変わります。
入力したテキストはサーバに送られますか?
いいえ。パターンと対象テキストはブラウザ内だけで処理します。
郵便番号や電話のサンプルは本番で使えますか?
簡易確認用です。厳密なバリデーションは仕様書と実データで検証してください。
文字数も数えたい
マッチした文字列を 文字数カウント に貼って確認できます。
全角半角をそろえてから試したい
先に 全角半角変換 で正規化してから貼ると安定しやすいです。
パターンをコピーする前に、対象テキスト内に特殊文字(. * ? など)が含まれていないかも確認してください。ユーザー入力をそのまま正規表現に埋め込む場合は、エスケープが必須です。