正規表現テスター
正規表現(regex)でテキストを検索し、マッチした箇所をその場でハイライト表示します。パターンを書きながら結果が即時に更新されるので、試行錯誤に便利です。JavaScriptの正規表現エンジンで動作し、入力内容は外部に送信されません。
対象テキスト
マッチ結果(ハイライト)
正規表現とは
正規表現は、「文字のパターン」を記号で表す書き方です。「数字3桁+ハイフン+数字4桁」のような規則を持つ文字列をまとめて探したり置き換えたりできます。ログから特定の形式を抜き出す、入力値のチェック(バリデーション)をするなど、実務で頻繁に使われます。
よく使う書き方
| 書き方 | 意味 |
|---|---|
| \d / \w / \s | 数字 / 英数字とアンダースコア / 空白 |
| . | 任意の1文字 |
| * / + / ? | 0回以上 / 1回以上 / 0か1回 |
| {3} / {2,4} | ちょうど3回 / 2〜4回 |
| [abc] / [^abc] | aかbかc / それ以外 |
| ^ / $ | 行頭 / 行末 |
| (…) | グループ化(キャプチャ) |
| a|b | aまたはb |
フラグの意味
g=すべてのマッチを探す(外すと最初の1件だけ)。i=大文字小文字を区別しない。m=^ と $ を「行ごと」の先頭・末尾として扱う。s=. が改行にもマッチするようにする。本ツールはハイライトのため常にgを付けて動作します。
ハマりやすいポイント
.* は「できるだけ長く」マッチする(貪欲)。 たとえば <.*> を <a>文字</a> に当てると、最初の < から最後の > まで全体にマッチしてしまいます。最短でマッチさせたいときは .*? のように ? を付けた「非貪欲(最短)マッチ」を使います。
記号そのものを探すにはエスケープが必要。 . * + ? ( ) [ ] { } ^ $ | \ は特別な意味を持つメタ文字です。IPアドレスの区切りの . をそのまま書くと「任意の1文字」になってしまうため、文字としてのドットは \. と書きます(例:192\.168\.\d+\.\d+)。
複雑なパターン+長い入力は「暴走」に注意(ReDoS)。 (a+)+ のように繰り返しが入れ子になったパターンは、条件次第で処理時間が入力の長さに対して爆発的に増え、サーバーを固めてしまうことがあります(ReDoSと呼ばれます)。入力チェックに正規表現を使うときは、むやみに入れ子の繰り返しを書かないのが安全です。
よくある質問
Q. 言語によって正規表現は違う?
A. 基本は共通ですが、細かな記法は言語ごとに差があります。本ツールはJavaScriptのエンジンを使っています。Linuxの grep -E やプログラミング言語で使う場合、一部の記法(先読みなど)が異なることがあります。
Q. 置換もできる?
A. 本ツールは検索・ハイライトに特化しています。置換はエディタやコマンド(sed など)と組み合わせて使うと便利です。