一括置換
正規表現とキャプチャグループに対応($1 参照)、置換する前にヒット数を確認してください。
〜で (\d+) のようなキャプチャグループを使う場合、置換欄では $1 参照;$& はマッチ全体を意味します。正規表現を間違えるとすぐにエラーになり、テキストは変更されません。
使う場面
- 書き出したデータに全角括弧・連続スペース・改行しない空白(U+00A0)が混ざっていて一括で消したいとき。正規表現で [\u00A0 ]+ と書くほうが手作業より速いです。
- 2024-01-05 のような日付を 2024/01/05 に一括で変えたいとき、または各電話番号の前に国番号を足しつつ、元の数字をキャプチャグループで残したいとき。
使わないほうがよい場面
- 複数行にまたがる一致や、行ごとの ^ $ が必要なとき。このページは常に g と任意の i を使い、m と s がないため、^ は全体の先頭だけに一致し、. は改行を越えません。
- 置換に条件分岐が必要なとき(ケースごとに別の文字列にする、値を計算する)。正規表現を重ねるより、sed や Python のスクリプトのほうが確実です。
置換はブラウザ内で完結し、テキストは送信されません。制限:正規表現は常に g と任意の i のみで、m・s・u がないため ^ $ は全体にしか効かず、. は改行を越えず、\p{...} は使えません。入力は純粋なテキストとして扱い、HTML や CSV の構造は解析しません。数 MB を超えると一括置換で明確に重くなります。
よくある質問
正規表現を間違えると本文が壊れますか?
壊れません。入力欄は書き換えられず、結果は出力欄にだけ出ます。正規表現のコンパイルに失敗した場合、置換は実行されず出力欄は前回のままです。ただしエラーはブラウザのコンソールにしか出ないため、画面上は無反応に見えます。括弧の閉じ忘れや [ の閉じ忘れが原因のことが多いです。
\p{L} や \u{1F600} が何にも一致しないのはなぜ?
正規表現を new RegExp(..., 'gi') で組み立てており u フラグがないため、\p は文字 p、\u{1F600} は文字列 u{1F600} として扱われます。エラーにはならず、一致もしません。Unicode プロパティやコードポイント表記を使いたい場合は、サロゲートペア(\uD83D\uDE00)か実際の文字で書いてください。