無料WEBツールdigtoooooools

by 大阪のホームページ制作会社digrart

正規表現チェッカー&テスター|電話番号・郵便番号|日本語スニペット・置換対応

正規表現を入力するとテキスト内のマッチ箇所をリアルタイムでハイライト表示します。フラグ切替・置換プレビュー・キャプチャグループ確認に対応。スニペット集からよく使うパターンをワンクリック挿入できます。

🔍 正規表現
/ /
⚠️ 処理時間が長すぎたため中断しました。パターンを見直してください。
フラグ:
📚 スニペット集(ワンクリック挿入)
📧 Web・メール
🇯🇵 日本語
🔢 数値・日付
🔑 その他
📄 テスト文字列
🔄 置換プレビュー
正規表現(Regular Expression / regex)とは
正規表現は、文字列内のパターンを記述するための記法です。テキストの検索・置換・バリデーション(入力値の検証)に使われ、JavaScriptをはじめPython、PHP、Java、Go、Ruby、シェルスクリプトなど多くのプログラミング環境で共通して利用できます。エディタ(VS Code、Sublime Text)やコマンドラインツール(grep、sed)にも正規表現機能が組み込まれており、プログラマー以外の職種でもテキスト処理に活用されています。
JavaScriptでの正規表現の書き方
JavaScriptでは /パターン/フラグ のリテラル形式と、new RegExp('パターン', 'フラグ') のコンストラクタ形式の2通りで正規表現を作成できます。リテラル形式はコード内に直接記述する場合に便利で、コンストラクタ形式は動的にパターンを組み立てる場合に使用します。String.prototype.match().replace().search().split() などの文字列メソッドと組み合わせて使います。
基本メタ文字
\d:数字(0-9)。\D:数字以外。\w:英数字+アンダースコア([a-zA-Z0-9_])。\W:\w以外。\s:空白文字(スペース、タブ、改行など)。\S:空白以外。.:改行以外の任意の1文字(sフラグで改行にもマッチ)。\\:バックスラッシュ自体のエスケープ。
量指定子(Quantifiers)
*:0回以上の繰り返し。+:1回以上の繰り返し。?:0回または1回(オプション)。{n}:ちょうどn回。{n,}:n回以上。{n,m}:n回以上m回以下。デフォルトは貪欲マッチ(最長一致)で、量指定子の後に ? を付けると非貪欲(最短一致)になります。例:.*? は最短マッチ。
アンカーと位置指定
^:行頭(mフラグで各行の先頭に対応)。$:行末(mフラグで各行の末尾に対応)。\b:単語の境界(英単語の開始・終了位置)。\B:単語の境界以外。
先読み・後読みアサーション(Lookahead / Lookbehind)
(?=...):肯定先読み(直後にパターンが続く位置にマッチ)。(?!...):否定先読み(直後にパターンが続かない位置にマッチ)。(?<=...):肯定後読み(直前にパターンがある位置にマッチ)。(?<!...):否定後読み(直前にパターンがない位置にマッチ)。先読み・後読みは「マッチする位置」を指定するだけで、マッチ結果にはその文字列自体は含まれません。パスワード強度チェックの (?=.*[A-Z])(大文字が含まれること)は肯定先読みの典型的な使用例です。
文字クラス(Character Classes)
[abc]:a, b, cのいずれか1文字。[a-z]:aからzの範囲。[^abc]:a, b, c以外の1文字(否定文字クラス)。[a-zA-Z0-9]:英数字。文字クラス内ではほとんどのメタ文字はリテラルとして扱われますが、-(範囲)、](閉じ括弧)、\(エスケープ)、^(先頭の場合は否定)は特別な意味を持ちます。
グルーピングとキャプチャ
(...):キャプチャグループ。マッチした部分を記憶し、$1, $2 で後方参照できます。(?:...):非キャプチャグループ。グルーピングのみ行い、キャプチャはしません。(?<name>...):名前付きキャプチャグループ。$<name> で参照可能。名前付きグループはコードの可読性を大幅に向上させます。
OR(選択)
|(パイプ)は選択を表し、左右いずれかのパターンにマッチします。例:cat|dog は "cat" または "dog" にマッチ。グルーピングと組み合わせると (http|https):\/\/ のように使えます。
ひらがな・カタカナ・漢字のUnicodeレンジ
日本語の正規表現では、Unicode範囲指定が不可欠です。主な範囲:ひらがな [\u3040-\u309F](「ぁ」〜「ゟ」)。全角カタカナ [\u30A0-\u30FF](「゠」〜「ヿ」)。漢字(CJK統合漢字) [\u4E00-\u9FFF]CJK互換漢字 [\uF900-\uFAFF]全角英数・記号 [\uFF01-\uFF5E]半角カタカナ [\uFF65-\uFF9F]uフラグを有効にするとサロゲートペア(絵文字や一部の漢字)も正しく扱えます。
電話番号・郵便番号のバリデーション
日本の電話番号は市外局番の桁数が地域によって異なる(東京03は2桁、大阪06は2桁、携帯は3桁)ため、厳密なパターンは複雑になります。実務では 0\d{1,4}-?\d{1,4}-?\d{3,4} のような緩めのパターンで対応し、詳細なバリデーションはサーバー側で行うのが一般的です。郵便番号は \d{3}-?\d{4} でハイフンの有無両方に対応できます。
全角・半角変換に使える正規表現
全角英数字([\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A])を検出し、文字コードの差分(0xFEE0)を減算することで半角に変換できます。逆に半角カタカナ([\uFF65-\uFF9F])の全角変換も正規表現で対象を特定した上で変換テーブルを適用する手法が一般的です。
主要なフラグの意味と使い分け
g(global):テキスト全体からすべてのマッチを検索。このフラグがないと最初のマッチで停止します。i(ignoreCase):大文字/小文字を区別しません。m(multiline):^$を行単位の先頭/末尾に変更します。s(dotAll):.が改行文字にもマッチするようになります。u(unicode):Unicodeのコードポイントを正しく扱い、サロゲートペアを1文字として認識します。d(hasIndices):各キャプチャグループの開始/終了位置を返します。v(unicodeSets):ES2024で追加された高度なUnicode機能で、セット内の演算(交差・差分)が可能になります。
貪欲マッチと非貪欲マッチ(Greedy vs. Lazy)
量指定子(*, +, {n,m})はデフォルトで貪欲(Greedy)に動作し、可能な限り多くの文字にマッチしようとします。例えば ".*" はHTMLタグ "class="test" id="main"" に対して文字列全体にマッチしてしまいます。量指定子の後に ? を付けると非貪欲(Lazy)になり、最短のマッチを返します: ".*?""class=""test" にそれぞれマッチします。
ReDoS(正規表現による過負荷)と対策
入れ子の量指定子(例: (a+)+)や、長い文字列に対するバックトラッキングは、特定の入力で指数的な処理時間を引き起こすReDoS(Regular Expression Denial of Service)脆弱性の原因になります。対策としては:(1) 非貪欲マッチの活用、(2) アトミックグループの使用(対応環境のみ)、(3) 入力長の制限、(4) タイムアウトの設定。本ツールではマッチ処理にタイムアウトを設定し、危険なパターンでもブラウザがフリーズしないよう保護しています。
フォームバリデーション
メールアドレス・電話番号・郵便番号・URLなど、ユーザー入力の形式チェックに正規表現は不可欠です。ただし、メールアドレスの完全な仕様(RFC 5322)を正規表現だけで網羅することは非常に困難であるため、基本的な形式チェックのみ正規表現で行い、実在確認はメール送信による認証で行うのがベストプラクティスです。
ログ解析
Webサーバーのアクセスログ(Apache/Nginx形式)やアプリケーションログからIPアドレス、タイムスタンプ、ステータスコード、ユーザーエージェントなどを正規表現で抽出します。名前付きキャプチャグループを活用すると、(?<ip>\d+\.\d+\.\d+\.\d+) のようにコードの可読性が向上します。
データクリーニング
CSVやExcelから取り込んだデータの清掃に正規表現は強力なツールです。余分な空白の除去(\s+ )、全角数字の半角変換、電話番号のフォーマット統一、HTMLタグの除去(<\/?[^>]+>)などが典型的な利用例です。
テキストエディタでの一括検索・置換
VS Code、Sublime Text、IntelliJ IDEAなどのエディタでは正規表現による検索・置換が利用できます。例えば、変数名のリネーム(old_name(\w*)new_name$1)、CSSプロパティの整理、マークダウンの書式変換などに活用できます。
パターン(Pattern)
正規表現で表現された検索条件を「パターン」と呼びます。/\d{3}-\d{4}/ の場合、\d{3}-\d{4} がパターンです。
マッチ(Match)
テスト文字列の中で正規表現パターンに合致した部分のこと。全体マッチ(マッチした文字列全体)を指します。
キャプチャグループ(Capture Group)
丸括弧 () で囲まれたパターンの一部。マッチした内容が記憶され、$1, $2 などで後方参照できます。
非キャプチャグループ(Non-capturing Group)
(?:...) で記述するグループ。グルーピングのみ行い、キャプチャはしないためパフォーマンスが向上します。
名前付きグループ(Named Group)
(?<name>...) で記述するグループ。$<name> やJavaScriptの match.groups.name で参照します。
後方参照(Backreference)
キャプチャグループでマッチした内容を置換文字列中で $1, $2 として再利用すること。$& はマッチ全体を参照します。
バックトラッキング(Backtracking)
正規表現エンジンがマッチに失敗した際に、前の選択肢に戻って別のマッチを試みる処理。過度なバックトラッキングはReDoSの原因になります。
貪欲マッチ(Greedy)
量指定子のデフォルト動作。可能な限り多くの文字にマッチしようとします。
非貪欲マッチ(Lazy / Non-greedy)
量指定子の後に ? を付けた動作。可能な限り少ない文字にマッチしようとします。
アンカー(Anchor)
文字ではなく「位置」にマッチするパターン。^(行頭)、$(行末)、\b(単語境界)が代表的です。
エスケープ(Escape)
メタ文字の特殊な意味を無効にし、文字そのものとしてマッチさせること。\. はドット文字そのものにマッチします。
フラグ(Flag / Modifier)
正規表現の動作を変更する修飾子。JavaScript標準フラグは g, i, m, s, u, d, v, y の8種です。
文字クラス(Character Class)
[...] で指定する文字の集合。集合内のいずれか1文字にマッチします。
量指定子(Quantifier)
直前のパターンの繰り返し回数を指定するメタ文字。*, +, ?, {n,m} が該当します。
先読み/後読み(Lookahead / Lookbehind)
マッチ位置の前後の条件を指定するゼロ幅アサーション。マッチ結果にはその文字自体は含まれません。
画像処理・テキスト解析
WEB開発ツール
SEO対策
ネットワーク
セキュリティ
ビジネス
SNS・エンタメ
生活