カテゴリー: 開発ツール

正規表現エスケープツール

サイト側で企画したツールツールが見つからない?

正規表現内でリテラルとして使えるようテキストをエスケープ

テキストブロック内のすべての正規表現メタ文字をエスケープしてリテラル一致できるようにし、結果をJavaScriptの正規表現リテラルまたはRegExpコンストラクタ呼び出しとしてコピーできます。すべてブラウザ内で完結します。

エスケープ済みテキスト
Prices start at \$4\.99 \(per item\)\? \[ask sales\]
JavaScript正規表現リテラル
/Prices start at \$4\.99 \(per item\)\? \[ask sales\]/g
RegExpコンストラクタ呼び出し
new RegExp("Prices start at \\$4\\.99 \\(per item\\)\\? \\[ask sales\\]", "g")

このページの処理はすべてブラウザ内で行われます。アップロードは一切ありません。

このツールでできること

価格やファイルパス、URLなどのリテラルテキストに一致するパターンを組み立てようとすると、テキストにピリオドや括弧、疑問符など正規表現が特別扱いする文字が含まれた瞬間に失敗します。このツールはJavaScriptの正規表現エンジンが認識するすべてのメタ文字をエスケープし、結果を `/パターン/フラグ` のリテラル形式と `new RegExp(...)` 呼び出し形式の2通りで表示するので、どちらもそのままコードに組み込めます。

使い方

  1. 検索したいリテラルテキストを貼り付けます。
  2. 生成するパターンに付けたいフラグ(gやiなど)を設定します。
  3. エスケープ済みテキスト、リテラル形式、またはコンストラクタ呼び出しをコピーします。

プライバシー

このツールはすべてブラウザ内で動作します。入力した内容がアップロード・保存・共有されることはなく、タブを閉じれば消えます。

よくある質問

テキストはどこかにアップロードされますか。
いいえ。エスケープはページ内で動作するJavaScriptで行われるため、貼り付けた内容がデバイスの外に出ることはありません。
どの文字がエスケープされますか。
JavaScriptの正規表現エンジンが特別扱いするすべての文字(. * + ? ^ $ { } ( ) | [ ] \ と /)で、エスケープ済みテキストは常に元の文字列とリテラルに一致します。
なぜコード例が2つあるのですか。
リテラル(/.../)は固定パターンを書く通常の方法ですが、実行時に変数から組み立てることはできません。RegExpコンストラクタ形式なら組み立てられるため、テキストが常に同じ値とは限らない場合に重要です。