text / regex

正規表現テスター

正規表現(RegExp)のパターンとテスト対象テキストを入力し、マッチ結果をリアルタイムで確認できます。

マッチなし

使い方

01
  1. 「パターン」欄に正規表現パターンを入力します(例:\d+
  2. 必要に応じてフラグ(g・i・m)をチェックします
  3. 「テスト対象テキスト」にマッチを確認したい文字列を入力します
  4. マッチ結果がリアルタイムで下部に表示されます
  5. キャプチャグループ(括弧でくくった部分)がある場合は $1, $2 … として表示されます

実装コード

02

ブラウザ標準の RegExpexec() のみで実装。外部ライブラリ不要でそのままコピーして利用できます。

// 正規表現でマッチを検索する純粋関数
export function testRegex(pattern, flags, input) {
  try {
    const regex = new RegExp(pattern, flags);
    const matches = [];
    if (flags.includes('g')) {
      let m;
      while ((m = regex.exec(input)) !== null) {
        matches.push({ match: m[0], index: m.index, groups: [...m].slice(1) });
        if (m[0].length === 0) regex.lastIndex++;
      }
    } else {
      const m = regex.exec(input);
      if (m) matches.push({ match: m[0], index: m.index, groups: [...m].slice(1) });
    }
    return { ok: true, matches, totalCount: matches.length };
  } catch (e) {
    return { ok: false, error: e.message };
  }
}

よくある使用例・注意点

03
電話番号・メールアドレスの検証パターン例
電話番号: /^0\d{1,4}-\d{1,4}-\d{4}$/ でハイフン区切りの日本の電話番号を検証できます。メールアドレス: /^[^\s@]+@[^\s@]+\.[^\s@]+$/ で簡易的なバリデーションが可能です。本格的な検証には仕様(RFC 5322)に準拠したパターンが必要です。
gフラグ忘れによるよくあるミス
gフラグなしで exec() を繰り返し呼ぶと、lastIndex がリセットされず同じマッチを無限に返すことがあります。全マッチを取得したいときは必ず g フラグを付けてください。このツールでは gフラグがある場合のみ exec() ループを使い、ない場合は最初の1件のみ取得します。
特殊文字のエスケープ(.は任意文字)
. はドット文字ではなく任意の1文字にマッチします。リテラルのドットにマッチさせたい場合は \. と書いてください。同様に * + ? ( ) [ ] { } ^ $ | \ も特殊文字です。文字列をそのままパターンに使う場合は、これらを \\ でエスケープするか String.prototype.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') で自動エスケープできます。
後方参照とキャプチャグループ
() でくくった部分はキャプチャグループになり $1, $2 … で参照できます。replace() では '$1' などで置換に使えます。例: 'hello world'.replace(/(\w+) (\w+)/, '$2 $1') → 'world hello'。グループをキャプチャせずに使いたい場合は (?:...) の非キャプチャグループを使います。

関連ツール

04
文字数カウンターHTMLエスケープURLエンコード

ソースコード

05

このツールのソースコード(テストコードを含む)はGitHubで公開しています。 MITライセンスで自由に利用・改変できます。

GitHub でコードを見る →