text / regex
正規表現テスター
正規表現(RegExp)のパターンとテスト対象テキストを入力し、マッチ結果をリアルタイムで確認できます。
マッチなし
使い方
01- 「パターン」欄に正規表現パターンを入力します(例:
\d+) - 必要に応じてフラグ(g・i・m)をチェックします
- 「テスト対象テキスト」にマッチを確認したい文字列を入力します
- マッチ結果がリアルタイムで下部に表示されます
- キャプチャグループ(括弧でくくった部分)がある場合は $1, $2 … として表示されます
実装コード
02ブラウザ標準の RegExp と exec() のみで実装。外部ライブラリ不要でそのままコピーして利用できます。
// 正規表現でマッチを検索する純粋関数
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ソースコード
05このツールのソースコード(テストコードを含む)はGitHubで公開しています。 MITライセンスで自由に利用・改変できます。
GitHub でコードを見る →