Text/Clean

検索と置換・正規表現の実践パターン集

テキスト整形にすぐ使える JavaScript 正規表現の検索と置換パターン13選。日付形式の変換、電話番号のマスキング、括弧内の削除、行末の空白の削除と $1 の使い方を解説。

検索と置換 は通常モードと正規表現モードの両方に対応しています。通常モードは入力した文字をそのまま検索し、正規表現モードはパターンで検索します。この記事では、正規表現モードのルールとよく使うパターンをまとめます。

このツールの正規表現のルール

  • 文法はブラウザの JavaScript 正規表現です。
  • g(すべて置換)、m(複数行)、u(Unicode)のフラグが自動で付きます。「大文字・小文字を区別しない」をオンにすると i が加わります。
  • m フラグがあるため、^$ はテキスト全体ではなく各行の先頭と末尾にマッチします。
  • u フラグがあるため、不要なバックスラッシュはエラーになります。たとえば \: は書けず、: と書く必要があります。\p{L} のような Unicode プロパティは使えます。
  • 置換後の内容では、$1$2 はキャプチャグループ、$& はマッチ全体、$$$ 1文字です。\n は改行、\t はタブになります。
  • パターンにエラーがある場合、そのステップは入力を変えずにエラーを表示します。
\s は改行にもマッチします。行をまたがずに空白だけを探すなら [ \t] を使ってください。

実践パターン

以下は「検索する内容 → 置換後の内容」の形式です。置換後の内容が「(空欄)」なら、欄を空のままにしてください。

1. 日付の形式を変える

(\d{4})-(\d{2})-(\d{2})$1.$2.$3

2026-09-23  →  2026.09.23

順番を入れ替えるには、$3/$2/$1 のようにグループ番号の位置を入れ替えます。

2. 携帯電話番号の中央を伏せる

(01[016789])-?(\d{3,4})-?(\d{4})$1-****-$3

010-1234-5678  →  010-****-5678
01098765432    →  010-****-5432

これは 010 などで始まる韓国の携帯番号向けのパターンです。日本の携帯番号(090・080・070)なら、最初のグループを (0[789]0) に変えると 090-1234-5678090-****-5678 になります。

3. メールアドレスの先頭を伏せる

\b([A-Za-z0-9._%+-]{2})[A-Za-z0-9._%+-]*@$1***@

hong.gildong@example.com  →  ho***@example.com

4. 括弧とその中身を削除

\s*\([^)]*\) → (空欄)

東京(本社) 大阪 (支社)  →  東京 大阪

((a)) のように括弧が入れ子になった構造は、一度では削除しきれないことがあります。なお、このパターンが対象にするのは半角の ( ) だけです。全角の ( ) には、先に「全角 ↔ 半角の変換」で半角に変換してから適用してください。

5. 行末の空白を削除

[ \t]+$ → (空欄)

6. 3行以上の改行を空行1行に

\n{3,}\n\n

7. 数値の3桁区切りのカンマを削除

(\d),(?=\d{3}\b)$1

1,234,567円  →  1234567円

8. URLのクエリ・ハッシュを削除

(https?:\/\/[^\s?#]+)[?#]\S*$1

https://example.com/page?utm_source=a#top  →  https://example.com/page

9. チャット履歴の先頭の時刻を削除

^\[?\d{1,2}:\d{2}(?::\d{2})?\]?[ \t]* → (空欄)

[12:30] こんにちは  →  こんにちは

10. 「姓, 名」の順番を入れ替える

^([^,\n]+),[ \t]*(.+)$$2 $1

Kim, Minsu  →  Minsu Kim

11. 繰り返された単語を1つに

\b(\w+)[ \t]+\1\b$1(「大文字・小文字を区別しない」をオンにすると The the も見つけます)

12. ハングルと英字の間に空白を入れる

(\p{Script=Hangul})([A-Za-z])$1 $2

한글abc  →  한글 abc

スクリプト名を \p{Script=Han}(漢字)などに変えれば、同じ考え方をほかの文字にも使えます。

13. 数値を角括弧で囲む

\d+(?:\.\d+)?[$&]

よくある間違い

  • ピリオド(.)をそのまま使う: 正規表現で . は任意の1文字を意味します。ピリオドやドメインのドットを探すなら \. と書いてください。example.comexampleXcom にもマッチします。
  • 欲張りな .\*: <.*> は1行の中で最初の < から最後の > までをまるごとつかみます。<b>x</b> <i>y</i> に適用すると、文字まですべて消えてしまいます。タグを1つずつつかむなら <[^>]*><.*?> を使います。
  • 置換後の内容の $: 正規表現モードで価格表示のように置換後の内容に $ を入れるには、$$ と書く必要があります。通常モードでは $ がそのまま入ります。
  • 特殊文字を文字として探す: ( ) [ ] + ? * を探すには、前にバックスラッシュを付けます。記号が多いなら、正規表現をオフにして通常モードで探すほうが簡単です。

複数行をまとめて扱う

検索する内容に \n を入れると、改行そのものを探せます。たとえば ,\n, は、カンマで終わる行を次の行とつなげます。行全体を削除するのが目的なら、正規表現より 行フィルター のほうが簡単です。文単位で行を分けるなら、改行を追加(分割) の「文末」基準のほうが安全です。

順番が大切です

検索と置換のステップは1つのパイプラインに複数入れられ、上から順番に適用されます。前のステップの結果が次のステップの入力になるので、先に空白を整理しておかないとパターンがマッチしないこともよくあります。前後の空白を削除連続する空白・タブを整理 を前に置けば、パターンをシンプルに書けます。

チェックリスト

  • 行単位のパターンには ^$ を使う。
  • 行をまたがないように、\s の代わりに [ \t] を使う。
  • 結果を確認し、間違っていたらステップをオフにしてパターンを直す。

最終更新: 2026-09-23