個人情報マスキングツール (PII Sanitizer)
ログや文面のメール・電話番号・IPアドレス・カード番号をブラウザ内で伏せ字やダミー値に置き換え
置換はお使いのブラウザ内で行われ、入力内容を外部へ送信する処理は含まれていません。検出は正規表現の形式一致のみのため、共有前に結果を目視で確認してください。
ログやドキュメントに含まれるメールアドレス、電話番号、IPアドレスなどを自動検出し、 指定した形式でマスキングします。
入力テキスト
マスキング後
自動検出・マスキングの対象
example@mail.com
Phone
090-1234-5678
IPv4
192.168.0.1
Credit Card
16桁 / Amex 15桁
PII Sanitizer の使い方
ログや問い合わせ文面に含まれるメールアドレス・日本の電話番号・IPv4アドレス・カード番号(16桁、および Amex 形式の15桁)を正規表現で検出し、伏せ字またはダミー値に置き換えるツールです。検出と置換は JavaScript の String.replace によってブラウザ内だけで行われ、入力内容を送信する処理は含まれていません。対象はこの4種類に限られ、氏名や住所のような文脈に依存する情報は検出しません。
テキストの入力
左側の入力欄にマスキングしたいテキストを貼り付けます。「サンプルを読み込み」を押すと、4種類の検出対象を含む例文が入ります。
置換モードとマスキング文字の選択
「部分マスク」は先頭文字や下4桁などを残して伏せ字にし、「ダミー置換」は user@example.com や 127.0.0.1 のような固定値に置き換えます。マスキング文字は *・●・[MASKED] から選べます。
結果の確認とコピー
「リアルタイムで処理」がオンなら入力と同時に右側へ結果が出ます。オフにすると「変換を実行」ボタンで任意のタイミングに処理できます。「クリップボードにコピー」で結果を取得します。
検出パターン一覧(正規表現と置換後の形)
このツールが使っている4本の正規表現と、それぞれの置換結果をまとめました。4本は1本の正規表現にまとめて1回の走査で適用され、同じ位置で複数に一致し得る場合はこの表の上から順(カード番号が最優先)に判定されます。置換後の文字列が別のパターンの対象になることはありません。
| 種別 | 正規表現 | 検出例 | 部分マスク(*) | ダミー置換 |
|---|---|---|---|---|
| カード番号(16桁 / Amex 15桁) | \b(?:\d{4}[ -]?\d{4}[ -]?\d{4}[ -]?\d{4}|\d{4}[ -]?\d{6}[ -]?\d{5})\b | 4111 1111 1111 1111 3782-822463-10005 | ****-****-****-1111 ****-******-*0005 | 0000-0000-0000-0000 0000-000000-00000 |
| メールアドレス | [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} | taro.tanaka@example.com | t***@example.com | user@example.com |
| 電話番号(日本) | 0\d{1,4}-?\d{1,4}-?\d{4} | 090-1234-5678 0312345678 | 090-****-**** 031******* | 000-0000-0000 |
| IPv4 アドレス | \b(?:\d{1,3}\.){3}\d{1,3}\b | 192.168.1.15 | ***.***.***.*** | 127.0.0.1 |
※ 電話番号はハイフンで3分割されている場合は「先頭ブロック-****-****」、3分割でない場合は10文字以上なら「先頭3文字+残りを伏せ字」、それ以外は全桁伏せ字になります。 IPv4 はオクテットの桁数にかかわらず各ブロック3文字の伏せ字、カード番号は区切りがスペースや無しでも結果はハイフン区切りに揃えられ、16桁は 4-4-4-4、15桁は 4-6-5 の形で下4桁だけを残します。 メールアドレスの正規表現は RFC 5322 が許す形式の一部(引用符付きローカル部や国際化ドメイン名を除く)だけを対象にした簡易版です。 正規表現の記法は MDN の正規表現ガイド で確認できます。
検出できないケース・誤検知するケース
上の正規表現に実際の文字列を通して確認した結果です。「変化なし」は検出されずにそのまま残ることを、伏せ字になっている行は本来の個人情報でなくても置換されることを示します。
| 入力例 | 結果(部分マスク・*) | 理由 |
|---|---|---|
| 0120-123-456 | 変化なし | 末尾ブロックが3桁のため、電話番号の形(末尾4桁)に一致しない |
| 090-1234-5678 | 変化なし | 全角数字・全角ハイフンは半角の数字・ハイフンにしか一致しない |
| +81-90-1234-5678 | 変化なし | 先頭が 0 でない国際形式は対象外 |
| user@localhost | 変化なし | ドメインに「ドット+2文字以上」が必要 |
| 2001:db8::1 | 変化なし | IPv6 アドレスは対象外 |
| 3782-822463-10005 | ****-******-*0005 | Amex 形式(4-6-5 の15桁)はカード番号として検出する。14桁(Diners Club 等)は対象外 |
| 田中太郎 / 東京都千代田区1-1 | 変化なし | 氏名・住所は検出対象に含まれていない |
| 2024-01-15 | 変化なし | 日付は 0 始まりでないため電話番号に一致しない |
| 999.999.999.999 | ***.***.***.*** | 誤検知。各オクテットが 255 以下かは確認しない |
| バージョン 1.2.3.4 | バージョン ***.***.***.*** | 誤検知。ドット区切りの4つの数字は IPv4 として扱われる |
| 受付番号 0001-2345-6789 | 受付番号 0001-****-**** | 誤検知。0 始まりの数字列は電話番号として扱われる |
| 1234-5678-9012-3456 | ****-****-****-3456 | 途中に 0 始まりの数字列(012-3456)を含むが、カード番号を電話番号より優先するため分断されない |
このように、検出は「文字列の形」だけを手がかりにしており、その数字が本当に電話番号なのか、そのアドレスが本当に個人に紐づくものなのかは判断していません。 共有前の一次処理として使い、対象外の情報(氏名・住所・ID など)は別途手作業で確認する前提で利用してください。
実際の使用例
部分マスク(マスキング文字 *)
4種類の検出対象を1つずつ含むテキストを部分マスクした結果です。メールはドメイン、電話番号は先頭3桁、カード番号は下4桁が残り、IPv4 は全オクテットが伏せ字になります。
INPUT
メール: taro.tanaka@example.com 電話番号: 090-1234-5678 IPアドレス: 192.168.1.15 カード番号: 4111-1111-1111-1111
OUTPUT
メール: t***@example.com 電話番号: 090-****-**** IPアドレス: ***.***.***.*** カード番号: ****-****-****-1111
ダミー置換
同じテキストをダミー置換モードで処理した結果です。元の値の一部は残らず、種類ごとに固定の値へ置き換わります。
INPUT
メール: taro.tanaka@example.com 電話番号: 090-1234-5678 IPアドレス: 192.168.1.15 カード番号: 4111-1111-1111-1111
OUTPUT
メール: user@example.com 電話番号: 000-0000-0000 IPアドレス: 127.0.0.1 カード番号: 0000-0000-0000-0000
部分マスク(マスキング文字 [MASKED])
マスキング文字に [MASKED] を選んだ結果です。メールと電話番号は文字数分だけ繰り返され、IPv4 とカード番号は1つの [MASKED] にまとまります。
INPUT
メール: taro.tanaka@example.com 電話番号: 090-1234-5678 IPアドレス: 192.168.1.15 カード番号: 4111-1111-1111-1111
OUTPUT
メール: t[MASKED][MASKED][MASKED]@example.com 電話番号: 090-[MASKED][MASKED][MASKED][MASKED]-[MASKED][MASKED][MASKED][MASKED] IPアドレス: [MASKED] カード番号: [MASKED]-1111
よくある質問
入力したテキストはサーバーに送信されますか?
送信されません。このページのコードには fetch や XMLHttpRequest などの通信処理がなく、検出と置換はブラウザ内の String.replace だけで行われます。入力内容はページを離れると破棄され、保存もされません。ただし、コピーした結果を貼り付ける先(チャットや Issue など)での取り扱いは、そのサービスの規約に従います。
何が検出され、何が検出されませんか?
検出対象はカード番号(4-4-4-4 の16桁と、Amex 形式 4-6-5 の15桁)、メールアドレス、日本の電話番号(0 で始まる7〜13桁の数字列、ハイフンは任意)、IPv4 アドレスの4種類だけです。氏名・住所・生年月日・マイナンバー・IPv6 アドレス・国際形式の電話番号(+81)・全角数字・0120-123-456 のような4-3-3桁のフリーダイヤル・Diners Club などの14桁カード番号は検出しません。サンプル文の「田中太郎」がそのまま残るのはこのためです。詳細は下の一覧表を参照してください。
メールアドレスのドメインが残るのはなぜですか?
部分マスクでは、ローカル部(@ の前)を先頭1文字+伏せ字3文字に縮め、ドメインはそのまま残す仕様です(taro.tanaka@example.com → t***@example.com)。ドメインも隠したい場合は「ダミー置換」を選ぶと全体が user@example.com になります。ローカル部が1文字だけのアドレスでは、先頭文字も残さず *@example.com のようになります。
カード番号と電話番号はどちらが優先して判定されますか?
カード番号です。4本の正規表現は1本にまとめて1回の走査で適用され、同じ位置で複数の形式に一致し得る場合はカード番号 → メール → 電話番号 → IPv4 の順で優先します。サンプルの 1234-5678-9012-3456 のように途中に 0 始まりの数字列を含むカード番号も、電話番号として分断されずに ****-****-****-3456 と下4桁だけが残ります。また置換後の文字列(ダミーの 0000-0000-0000-0000 など)が別のパターンに再び一致することもありません。ただし検出は形式一致だけで行うため、貼り付ける前に結果を目視で確認してください。
電話番号以外の数字も伏せられてしまいます。
電話番号の正規表現は前後の文脈を見ず「0 で始まり、途中に任意のハイフンを含む7〜13桁の数字列」に一致するため、0001-2345-6789 のような受付番号や 05001234567 のような注文番号も電話番号として置換されます(0001-****-****、050********)。同様に IPv4 の正規表現は各オクテットが 255 以下かを確認しないため、バージョン番号 1.2.3.4 や 999.999.999.999 も ***.***.***.*** になります。残したい数字がある場合は、結果をコピーしてから該当箇所を元に戻してください。
ダミー置換と部分マスクはどう使い分けますか?
部分マスクは「どの種類の情報がそこにあったか」と一部の識別情報(電話の先頭3桁、カードの下4桁、メールのドメイン)を残すので、ログの流れを追いながら共有したいときに向きます。ダミー置換はメールが user@example.com、電話が 000-0000-0000、IPv4 が 127.0.0.1、カードが 0000-0000-0000-0000 に固定されるため、元の値の手がかりを残したくないときに使います。ダミー置換ではマスキング文字の選択は無視されます。
[MASKED] を選ぶと結果が長くなるのはなぜですか?
メールアドレスと電話番号は「マスキング文字を1文字ずつ繰り返す」処理になっているため、[MASKED] を選ぶと t[MASKED][MASKED][MASKED]@example.com のように文字列が3回や4回繰り返されます。IPv4 とカード番号には [MASKED] 専用の分岐があり、それぞれ [MASKED]、[MASKED]-3456(Amex も [MASKED]-0005 のように下4桁)の形にまとまります。短く揃えたい場合は * か ● を選んでください。
役立つTips
貼り付ける前に結果を目視で確認
検出は正規表現の形式一致だけで行うため、見落とし(未検出)と誤検知(過検出)の両方が起こります。Issue やチャットに貼る前に、結果欄に残ってほしくない情報が残っていないか確認してください。
氏名や社名は別途置き換える
このツールが対象にしない氏名・社名・住所は、エディタの置換機能などで個別に置き換える必要があります。マスク後にこのサイトの「テキスト差分比較」で置換前後を並べると、置き換え漏れを見つけやすくなります。
URL に埋め込まれたメールや IP も対象
https://example.com/?email=a@b.co のように URL の一部になっているメールアドレスや IPv4 アドレスも、文字列として形式に一致すれば置換されます。ただし %40 のようにパーセントエンコードされた @ は一致しません。
ダミー値は実在しにくい値
ダミー置換で使う example.com は RFC 2606 で文書・例示用に予約されたドメイン、127.0.0.1 はループバックアドレスで、いずれも実在のユーザーやサーバーと衝突しにくい値です。