HTMLツール

無料 RegExp.escape()ヘルパー

安全な動的正規表現パターンのために文字列内の特殊文字をエスケープするRegExp.escape()呼び出しを生成します。

ツールを読み込み中...

RegExp.escape()ヘルパーとは

RegExp.escape(string)は、すべての特殊な正規表現文字をバックスラッシュでエスケープした新しい文字列を返す静的メソッドです。これにより、ユーザー入力から動的パターンを構築する際に、RegExpコンストラクタ内で安全に文字列を使用できます。このメソッドはBaseline 2025(Chrome 132+)の一部であり、開発者が何十年も書いてコピーしてきたエラーが発生しやすい手動エスケープ関数を置き換えます。

クイックアンサー

RegExp.escape(string)を使用して、動的なRegExpパターンを構築する前に、ユーザー入力内の特殊な正規表現文字を安全にエスケープします。14個すべての正規表現メタ文字をサポートしています。Chrome 132+、Edge、Firefox、Node.js 20+で利用可能。もう手動のエスケープ正規表現チェーンは必要ありません。

Last updated: 2026-06-02

制限事項

  • Baseline 2025をサポートしていない環境では利用できません。古いNode.jsバージョンやレガシーブラウザには、ポリフィルまたは従来の手動置換関数を使用してください。
  • RegExp.escape()は文字列入力のみを処理します。RegExpフラグやパターンオプションについては、自分で完全なパターン文字列とフラグ配列を構築する必要があります。
  • このメソッドはすべての特殊文字を無条件にエスケープします。リテラルユーザー入力と意図的な正規表現構文(ワイルドカードなど)を混在させるパターンを構築する必要がある場合は、意図的な構文を個別に処理する必要があります。

Sources:MDN Web Docs · W3C Specifications · jquery.app on GitHub

使い方

  1. 検索ボックスやフィルター入力など、ユーザー提供または変数の入力からRegExpパターンを構築する必要がある場所を特定します。
  2. RegExpコンストラクタのパターン文字列に挿入する前に、入力文字列をRegExp.escape()に渡します。
  3. エスケープされた文字列をRegExpパターンで使用します:new RegExp(RegExp.escape(userInput), 'gi')。
  4. ツール出力に含まれる生成コードを確認します。ネイティブメソッドと比較用の手動エスケープ関数の両方が表示されます。

主な用途

  • ユーザーのキーストロークをライブフィルタリング用の正規表現に変換するクライアントサイド検索フィルターを構築します。エスケープにより、無効または注入されたパターンが正規表現を壊すのを防ぎます。
  • ユーザーが検索するリテラル文字列と置換を入力する検索置換UIを作成します。エスケープにより、.や*などの文字がリテラルとして扱われることを保証します。
  • ユーザー入力からRegExpを構築し、マッチをspanでラップすることでテキストコンテンツ内の検索語を強調表示します。エスケープによりパターンの構文が有効であることが保証されます。

用途

使用例

ライブ検索フィルター

製品一覧ページの検索入力でアイテムを名前でフィルタリングします。ユーザーが.NETや(Premium)などと入力します。RegExp.escape()が各クエリを安全なパターンに変換するため、特殊文字があっても検索が正しく機能します。

テキストエディタでの検索と置換

シンプルなブラウザベースのテキストエディタでユーザーがテキストを検索して置換できます。検索文字列は置換正規表現を構築する前にRegExp.escape()でエスケープされるため、$100や(C)を検索すると正規表現構文をトリガーせずにリテラルマッチが見つかります。

よくあるミス

  • ユーザー入力をエスケープせずに正規表現パターンに直接埋め込む。入力に(、)、*などの特殊文字が含まれていると構文エラーが発生し、正規表現全体が壊れます。
  • すでに意図的に正規表現メタ文字を含むパターン文字列全体にRegExp.escape()を使用する。このメソッドはすべてをエスケープするため、量指定子やグループを持つ事前構築済みパターンは特別な意味を失います。
  • RegExp.escape()がnullやundefinedの入力も処理すると思い込む。文字列値を渡すか、呼び出し前に入力タイプを確認してTypeErrorを回避してください。

検証

  1. Chrome 132+ DevToolsコンソールを開きます。RegExp.escape('hello.world')を呼び出し、'hello\.world'を返すことを確認します。RegExp.escape('test (1) [2]')を呼び出し、括弧とブラケットがエスケープされることを確認します。
  2. new RegExp(RegExp.escape('.*+?'), 'g')を構築し、リテラル文字列'.*+?'に対してテストします。マッチすることを確認し、特殊文字がリテラルとして扱われることを確認します。

FAQ

RegExp.escape()ヘルパーのFAQ

RegExp.escape()はどの文字をエスケープしますか?

このメソッドは14個の特殊な正規表現文字をエスケープします:^ $ \\ . * + ? ( ) [ ] { } |。それぞれ返される文字列内でバックスラッシュが前に付加されます。たとえば、RegExp.escape('hello.world')は'hello\.world'を返し、RegExp.escape('price $10')は'price \$10'を返します。

RegExp.escape()は開発者が以前使用していた手動エスケープ関数と比べてどうですか?

手動アプローチは通常、string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')を使用していました。これは読みにくい正規表現で、開発者は理解せずにコピーすることがよくありました。RegExp.escape()は一貫した動作、正規表現内の正規表現がない、エッジケースのバグがない標準APIです。よりシンプルで高速で、ブラウザベンダーによってメンテナンスされています。

RegExp.escape()はNode.jsで利用できますか?

RegExp.escape()はWeb APIではなくJavaScript言語機能であり、Node.js 20+でRegExpコンストラクタのコアメソッドとして利用できます。ポリフィルやnpmパッケージは不要です。サポートについてはNode.jsのバージョンを確認してください。

RegExp.escape()はUnicodeや特殊なスペースで使用できますか?

はい。RegExp.escape()はUnicode文字や通常と異なる空白を含む任意の有効なJavaScript文字列で動作します。14個の正規表現メタ文字のみをエスケープし、非ラテン文字を含む他のすべての文字はそのままにします。

関連ツール

その他のhtmlツール

こちらもお試しください

こちらもお試しください