ブログ
日本語

正規表現 チェッカー — JavaScriptのマッチと置換をオンラインでテスト

フラグ・マッチのハイライト・グループ一覧・置換プレビュー付きのJavaScript正規表現テスター

ブラウザー内で処理・アップロード不要

フラグ

正規表現 チェッカーとは

正規表現は、ちょっとした書き間違いが起きやすいものです。パターンとテキストを入力すると、このツールはどこにマッチするかをすぐに示し、マッチごとに色を付けて、すべてのマッチを位置とキャプチャグループとともに一覧表示します。置換文字列を入力すれば、置換後のテキストもプレビューできます。

使い方

  1. パターンを前後のスラッシュなしで入力します(コードから/pattern/giの形で貼り付けると、パターンとフラグに分けられます)。例:(\d+)-(?<word>[a-z]+)
  2. 必要なフラグにチェックを入れます。すべてのマッチを探すgは初期設定でオンです。
  3. テスト用のテキストを貼り付けます。マッチした部分がハイライトされ、表に各マッチの位置とグループが表示されます。
  4. 置換欄で$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フラグがあるときはコードポイント単位で進むため、絵文字が途中で分割されることもありません。

ほしいツールはありますか?