# 正規表現テスター

JavaScript の正規表現を、リアルタイムのハイライト、キャプチャグループ、わかりやすい言葉での説明とともにテストします。

https://codeknife.dev/ja/seiki-hyogen-tester/

## 概要

正規表現をテキストに対して試し、すべてのマッチをハイライト表示して、キャプチャグループを一覧にします。パターンは時間制限付きの別ワーカーで実行されるため、バックトラックが激しいパターンでもページが固まりません。入力した内容がブラウザの外に出ることはありません。

## 使い方

1. 前後のスラッシュを付けずに、パターンを入力します。
2. フラグを選びます。`g`(すべてのマッチ)、`i`(大文字と小文字を区別しない)、`m`(複数行)、`s`(ドットが改行にも一致)、`u`(Unicode)、`y`(スティッキー)です。
3. 検索するテキストを貼り付けます。入力に合わせてマッチがハイライトされ、グループが一覧に表示されます。
4. マッチを選ぶと、その位置と各グループの値が表示されます。
5. 説明の横の「クイックリファレンス」タブを開くと、トークンを調べてカーソル位置に挿入できます。

## 例

`\b\w+\b` で文中の単語を見つけます。

```
Hello, world!  →  Hello, world
```

`(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})` で、名前付きグループを使って日付をキャプチャします。

```
2026-10-09  →  year 2026, month 10, day 09
```

## 知っておくと便利なこと

- JavaScript、PCRE2、Rust、Go はそれぞれ専用のエンジンで動作します。後ろの 3 つは、選んだときに読み込まれる WebAssembly モジュールです。
- Python、Java、.NET、POSIX ERE、POSIX BRE はエミュレートです。パターンはそのフレーバーにない構文がないか確認され、書き換えられて PCRE2 上で実行されます。まれな境界ケースでは本物と異なる場合があり、POSIX の選択では最長一致が選ばれますが、エミュレートでは最初に一致した選択肢が使われます。
- 後読み(`(?<=…)`)と名前付きグループは、最近のブラウザで使えます。
- パターンがタイムアウトした場合は、`(a+)+` のような入れ子の量指定子を単純にしてください。

## 正規表現とは?

正規表現(regex)は、テキストを探すための簡潔なパターンで、正確な語句ではなく、何を探すかを記述します。開発者は検索、検証、データの抽出に使います。このテスターは JavaScript、PCRE2、Rust、Go のパターンをそれぞれ専用のエンジンで実行し、Python、Java、.NET、POSIX は PCRE2 上でエミュレートします。パターンを別の場所へ持ち出す前に、フレーバーを確認してください。

## よくある質問

### フラグは何をしますか?

g は最初の1件ではなくすべてのマッチを検索し、i は大文字と小文字を区別せず、m は ^ と $ を各行に一致させ、s はドットが改行にも一致するようにし、u は Unicode の完全なサポートを有効にします。

### パターンがタイムアウトで止まるのはなぜですか?

特定のテキストに対して、指数関数的に時間がかかるパターンがあります(壊滅的なバックトラック)。ページがフリーズしないよう、テスターは2秒後に実行を止めます。

### テキストはどこかに送信されますか?

いいえ。パターンとテキストはブラウザ内で処理され、何もアップロードされません。