この記事に関連するツール
ブラウザ上ですぐに試せます。記事の内容を確認しながら使うと、作業の流れをつかみやすくなります。
正規表現は、コードに直接書いてから試すと修正のたびに手間がかかります。
先にサンプルテキストでパターンを検証しておくと、実装後の細かい手戻りを減らせます。
こんな場面で使う
たとえば、ログからリクエストIDだけを取り出したいとします。
2026-05-17T10:15:31Z INFO request_id=req_8f3a2 user_id=42 status=200
2026-05-17T10:15:32Z ERROR request_id=req_91bc0 user_id=42 status=500
Regex ツールで次のようなパターンを試します。
request_id=(req_[a-z0-9]+)
マッチ結果を見ながら、必要な部分だけをキャプチャできているか確認します。
抽出後にコードへ移す場合は、どのグループを使うかまでメモしておくと安全です。
const match = line.match(/request_id=(req_[a-z0-9]+)/);
const requestId = match?.[1];
ツール上で req_8f3a2 だけが取れていることを確認してから実装すると、request_id= まで含めて保存してしまうような小さなミスを防げます。
実装前に見るポイント
最初から完璧な正規表現を書こうとせず、実データに近いサンプルを数行用意します。
成功するケースだけでなく、マッチしてほしくないケースも入れておくと安全です。
request_id=req_8f3a2
request_id=
request=req_999
request_id=REQ_ABC
大文字小文字、空文字、似たキー名を混ぜておくと、想定外のマッチに気づけます。
実例:メールアドレスのマスク処理を確認する
問い合わせログを共有するとき、メールアドレスだけをマスクしたい場面があります。
user=alice@example.com action=login
note=notify bob@example.org tomorrow
invalid=user@example
まずは対象を広く取りすぎないパターンを試します。
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b
置換後のイメージは次のようになります。
user=[email] action=login
note=notify [email] tomorrow
invalid=user@example
invalid=user@example が置換されないこと、文中のメールアドレスは置換されることを確認してからコードに入れると、ログ共有時の伏せ漏れや過剰な置換を減らせます。
置換前の確認にも使える
フォーム入力の整形やログのマスク処理では、置換対象が広すぎると事故につながります。
本番コードに入れる前に、どの範囲がマッチするかをツール上で確認しておくのがおすすめです。
チームレビューで残しておくとよい情報
正規表現はあとから読む人に意図が伝わりにくいので、サンプル入力、期待するマッチ、マッチしてほしくない例を短く残しておくとレビューが楽になります。
OK: request_id=req_8f3a2
NG: request=req_8f3a2
NG: request_id=
この3行があるだけでも、将来パターンを変更するときに「どこまで許容する正規表現なのか」が分かります。