正規表現 チェッカー — JavaScriptのマッチと置換をオンラインでテスト
フラグ・マッチのハイライト・グループ一覧・置換プレビュー付きのJavaScript正規表現テスター
ブラウザー内で処理・アップロード不要
正規表現 チェッカーとは
正規表現は、ちょっとした書き間違いが起きやすいものです。パターンとテキストを入力すると、このツールはどこにマッチするかをすぐに示し、マッチごとに色を付けて、すべてのマッチを位置とキャプチャグループとともに一覧表示します。置換文字列を入力すれば、置換後のテキストもプレビューできます。
使い方
- パターンを前後のスラッシュなしで入力します(コードから
/pattern/giの形で貼り付けると、パターンとフラグに分けられます)。例:(\d+)-(?<word>[a-z]+) - 必要なフラグにチェックを入れます。すべてのマッチを探す
gは初期設定でオンです。 - テスト用のテキストを貼り付けます。マッチした部分がハイライトされ、表に各マッチの位置とグループが表示されます。
- 置換欄で
$1、$<name>、$&を使って結果を確認し、コピーします。マッチした部分をすべて削除したい場合は、置換結果を表示をオンにして欄を空のままにします。
仕組み
- フラグ:
gはすべてのマッチを検索、iは大文字小文字を区別しない、mは^と$を行ごとに働かせる、sは.を改行にもマッチさせる、uはUnicodeモード、yは現在の位置でだけマッチさせる(sticky)です。 gがないと最初のマッチだけを返します。gとyの両方があると、すき間なく連続するマッチだけが見つかります。- 空のマッチ(
a*、^、空のパターン)では位置を1文字進めて検索を続けます。uがあればコードポイント単位で進みます。 - 置換の構文は
String.prototype.replaceと同じで、$$、$&、$`、$'、$1〜$99、$<name>が使えます。 - 安全対策:マッチは最大1,000件、テキストは200,000文字、パターンは5,000文字まで、実行時間は1.5秒までです。時間制限は、マッチングをWeb Workerで実行して強制終了する仕組みなので、メインのページが固まることはありません。
例
| パターン | フラグ | テキスト | 結果 |
|---|---|---|---|
\d+ |
g | a1 b22 c333 |
1、22、333 |
[ぁ-んァ-ヶー]+ |
g | abc ひらがな test カタカナ |
ひらがな、カタカナ |
a* |
g | baac |
位置0、1(aa)、3、4の4件 |
(?<y>\d{4})-(\d{2}) |
2024-05 |
グループ1 y = 2024、グループ2 = 05 |
補足
[ぁ-ん]はひらがな、[ァ-ヶ]はカタカナにマッチします。漢字はuフラグと\p{Script=Han}、絵文字はuフラグと\p{Emoji_Presentation}でマッチさせられます。- パターンとテキストがサーバーに送信されることはありません。
よくある質問
どの種類の正規表現ですか?
ブラウザーに組み込まれたJavaScript(ECMAScript)の正規表現エンジンを使うため、Python、PCRE、Javaとは構文が異なる部分があります。強欲な量指定子や(?i)のようなインラインフラグは使えず、名前付きグループは(?<name>...)と書きます。
パターンの実行に時間がかかりすぎるとどうなりますか?
マッチングは別のWeb Workerで実行し、1.5秒たつと強制終了します。(a+)+$のような繰り返しの入れ子は、入力が少し長くなるだけで指数関数的に遅くなることがあります(破滅的バックトラッキング)。その場合はメッセージを表示し、ページは固まりません。
マッチの数やテキストの長さに上限はありますか?
表示するマッチは最初の1,000件まで、テキストは200,000文字まで、パターンは5,000文字までです。それを超えると一覧が途中で打ち切られるか、代わりにメッセージが表示されます。
空文字列にマッチするパターンで無限ループになりませんか?
なりません。空のマッチの後は検索位置(lastIndex)を1文字進めるので、ループは必ず終わります。uフラグがあるときはコードポイント単位で進むため、絵文字が途中で分割されることもありません。