ツールナビ
開発ツール 登録不要 無料 ブラウザ完結

正規表現テスター(無料・登録不要)

正規表現をリアルタイムでテスト・確認。フラグ6種(g/i/m/s/u/y)対応、マッチ位置・キャプチャグループ表示、置換プレビュー、抽出機能。チートシート・テンプレート10種・共有URL付き。JavaScript/Python/PHP/Java のコードスニペット自動生成。ブラウザ完結・無料。

最終更新:2026年5月14日

正規表現をリアルタイムでテスト・確認できる日本語ツール。フラグ6種(g/i/m/s/u/y)・マッチハイライト・キャプチャグループ表示・置換プレビュー・抽出・チートシート・テンプレート10種・共有URLに対応。ブラウザ完結でサーバーへの送信なし。
テンプレート:

正規表現チートシート(メタ文字・量指定子・先読み・後読み)

基本メタ文字

.改行以外の任意の1文字
^行の先頭(mフラグで各行先頭)
$行の末尾(mフラグで各行末尾)
\d数字 [0-9] と同等
\D数字以外 [^0-9] と同等
\w英数字+アンダースコア [a-zA-Z0-9_]
\W\w 以外の文字
\s空白文字(スペース・タブ・改行等)
\S空白以外の文字
\b単語境界(\wと\Wの境界)
\B単語境界以外
\n改行文字(LF)
\tタブ文字

量指定子(greedy / lazy)

*0回以上(greedy: できるだけ多く)
+1回以上(greedy: できるだけ多く)
?0回または1回
{n}ちょうどn回
{n,}n回以上
{n,m}n〜m回
*?0回以上(lazy: できるだけ少なく)
+?1回以上(lazy: できるだけ少なく)
??0回または1回(lazy)

文字クラス

[abc]a・b・c のいずれか1文字
[^abc]a・b・c 以外の1文字
[a-z]aからzまでの英小文字
[A-Z]AからZまでの英大文字
[0-9]0から9までの数字
[a-zA-Z0-9]英数字(大文字小文字含む)

グループと参照

(abc)キャプチャグループ($1で参照)
(?:abc)非キャプチャグループ(参照なし)
(?<name>abc)名前付きキャプチャグループ($<name>で参照)
a|baまたはb(OR条件)
\1後方参照(1番目のキャプチャを再マッチ)

先読み・後読み(Lookaround)

(?=abc)肯定的先読み: abc が続く箇所にマッチ
(?!abc)否定的先読み: abc が続かない箇所にマッチ
(?<=abc)肯定的後読み: abc が先行する箇所にマッチ
(?<!abc)否定的後読み: abc が先行しない箇所にマッチ

フラグ一覧

gグローバル: 全件マッチ(なければ最初の1件のみ)
i大文字小文字を区別しない
m複数行モード: ^/$が各行の先頭/末尾にマッチ
sdotAll: . が改行文字にもマッチ(ES2018+)
uUnicodeモード: サロゲートペアを正しく扱う
ysticky: lastIndexの位置からのみマッチ

競合ツールとの機能比較

主要正規表現テスターとの機能比較(2026年5月調査)

機能 tools-navi.jp
(当ツール)
regex101
.com
studioasari
regextester
weblabo
regex
site24x7
regex
リアルタイムハイライト✅ カラー分け
フラグ対応数6種 (g/i/m/s/u/y)6種3種 (g/i/m)3種
フラグ説明(ホバー)✅ 詳細
マッチ位置(行・列)
キャプチャグループ表示✅ 番号・名前
置換プレビュー
マッチ抽出機能
日本語チートシート✅ 先読み/後読み含む❌ 英語△ 簡易
テンプレート集✅ 10種
共有URL✅ Base64
コードスニペット生成✅ 4言語
日本語UI✅ 完全
ダークモード

※ 調査日: 2026年5月14日 / △は部分対応

正規表現の基本: メタ文字・量指定子の使い方

正規表現(Regular Expression)は、文字列のパターンを表現するための表記法です。検索・置換・バリデーションなど幅広い場面で使われます。

まず覚えるべき5つのパターン

\d+
1個以上の数字 電話番号・金額・番号などの数字列にマッチ。\d{3} で3桁固定。
[a-zA-Z]+
英字(大文字小文字) 半角英字のみにマッチ。iフラグを使えば [a-z]+ でも大文字にマッチ。
^.+$
1行丸ごと ^は行頭・$は行末・.+は1文字以上任意。mフラグで各行に対して適用。
(\w+)@(\w+\.\w+)
簡易メールアドレス キャプチャグループで@前後を分離。$1でユーザー名・$2でドメインを参照可能。
(?<=\d)(?=(?:\d{3})+$)
数字3桁区切り位置 先読み・後読みの組み合わせ。1234567 → 1,234,567 のような変換に使用。

greedy vs lazy(欲張りvs控えめ)の違い

量指定子はデフォルトでgreedy(欲張り)— できるだけ多くの文字にマッチしようとします。?を追加するとlazy(控えめ)— できるだけ少なくなります。

入力<a>リンク</a><b>太字</b>
greedy<.+><a>リンク</a><b>太字</b>(全体1件)
lazy<.+?><a></a><b></b>(各タグ4件)

JavaScriptの正規表現: Regexオブジェクト・使い方

JavaScriptで正規表現を使う主なメソッドと使い分けを解説します。

test()

パターンにマッチするか真偽値で返す。バリデーションに最適。

const re = /^\d+$/;
re.test('123');   // true
re.test('12a');   // false
match()

マッチ情報を配列で返す。gフラグなしで詳細・gフラグで全件。

const str = 'cat bat sat';
str.match(/[a-z]at/g);
// ['cat', 'bat', 'sat']
replace()

マッチ箇所を置換。$1・$2でキャプチャグループを参照可能。

// 日付フォーマット変換
'2026-05-14'.replace(
  /(\d{4})-(\d{2})-(\d{2})/,
  '$1年$2月$3日'
);
// '2026年05月14日'
matchAll()

gフラグ必須。全マッチのイテレータを返す。グループ情報も取得可。

const re = /(?<y>\d{4})-(?<m>\d{2})/g;
for (const m of str.matchAll(re)) {
  console.log(m.groups.y, m.groups.m);
}
split()

正規表現で文字列を分割。区切り文字が不規則な場合に有効。

// スペース・タブ・カンマで分割
'a, b  c\td'.split(/[\s,]+/);
// ['a', 'b', 'c', 'd']
exec()

gフラグ時にlastIndexを更新しながら1件ずつ返す。

const re = /\d+/g;
let m;
while ((m = re.exec('1a2b3')) !== null) {
  console.log(m[0], m.index);
  // '1' 0 / '2' 2 / '3' 4
}

よく使う正規表現パターン集(テンプレート解説)

実務でよく使う正規表現パターンの解説。上のテスターから「テンプレート」ボタンでワンクリック挿入できます。

メールアドレス [a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}

RFC準拠の簡易メールバリデーション。多くの実用ケースをカバー。完全なRFC 5322準拠が必要な場合はより複雑なパターンが必要。

URL(http/https) https?:\/\/[\w/:%#\$&?()~.=+\-]+

http・httpsで始まるURLにマッチ。クエリパラメータやハッシュも含む。URLデコードされた文字には別途対応が必要。

電話番号(日本) 0\d{1,4}[\-\.()\(\)]?\d{1,4}[\-\.()\(\)]?\d{4}

固定電話・携帯電話・フリーダイヤルに対応。ハイフン・ドット・括弧の有無に対応。ハイフンなし連結でも一致。

郵便番号(日本) \d{3}[\--]?\d{4}

〒123-4567形式・1234567のハイフンなし形式の両方にマッチ。全角ハイフン(-)にも対応。

日付(YYYY-MM-DD) \d{4}[\-/年]\d{1,2}[\-/月]\d{1,2}日?

2026-05-14・2026/5/14・2026年5月14日 など複数フォーマットに対応。厳密な日付範囲チェックは別途ロジック必要。

IPアドレス(v4) (?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)

0〜255の各オクテットを厳密にバリデーション。256以上の値には一致しない。

HTMLタグ(lazyマッチ) <[^>]+?>

開始・終了タグにマッチ。<.+?>のlazy版(属性内に>がない前提)。HTMLはDOMパーサーで解析するのが理想。

数字(3桁カンマ区切り位置) (?<=\d)(?=(?:\d{3})+$)

先読みと後読みを組み合わせた高度なパターン。replace()と組み合わせて 1234567 → 1,234,567 の変換に使用。

空行を除去 ^\s*$

空行(スペースのみの行含む)にマッチ。mフラグと組み合わせてreplace(/^\s*$/gm, '')で一括除去。

クレジットカード番号 \b(?:\d[ \-]?){13,16}\b

13〜16桁の数字(スペース・ハイフン区切り可)。Visa/Mastercard/AMEX等に対応。本番環境ではPCIカード決済基準に従い専用ライブラリ推奨。

先読み・後読み(Lookaround)の完全ガイド

正規表現テスターとは何ですか?
正規表現テスターは、書いた正規表現パターンが特定の文字列にマッチするかをリアルタイムで確認できるツールです。マッチした箇所のハイライト表示、キャプチャグループの内容確認、置換プレビューなどができます。
正規表現のフラグとは何ですか?
正規表現フラグはパターンの動作を変えるオプションです。主なフラグ: g(全件マッチ・なければ最初の1件のみ)、i(大文字小文字を区別しない)、m(^/$が各行の先頭/末尾にマッチ)、s(.が改行にもマッチ・ES2018+)、u(Unicodeモード)、y(sticky・lastIndexの位置から開始)。
先読み・後読みはどのブラウザで使えますか?
肯定的先読み(?=...)・否定的先読み(?!...)はすべての現代ブラウザで使用可能です。後読み((?<=...)・(?
正規表現の共有URLはどのように機能しますか?
「共有URL」ボタンを押すと、入力したパターン・フラグ・テストテキストをBase64エンコードしてURLパラメータとして付加したURLが生成されます。そのURLを開くと同じ状態が復元されます。URLはページを離れても保持されるため、チームメンバーへの共有に便利です。
greedy(欲張り)とlazy(控えめ)の違いは?
greedy量指定子(*・+・?・{n,m})はデフォルトで可能な限り多くの文字にマッチしようとします。lazy量指定子(*?・+?・??・{n,m}?)は可能な限り少ない文字でマッチしようとします。例えば<.+>はHTMLを丸ごとマッチしますが、<.+?>は各タグに個別にマッチします。
JavaScriptの正規表現でUnicode文字を扱うには?
uフラグ(Unicodeモード)を使用します。uフラグを付けると、サロゲートペア(絵文字・特殊文字等)を正しく1文字として扱います。また\p{...}というUnicodeプロパティエスケープが使えるようになり、\p{L}で全言語の文字、\p{Script=Hiragana}でひらがな等を指定できます(ES2018+)。
正規表現で日本語にマッチするには?
JavaScriptでuフラグを使いp{Script=Hiragana}p{Script=Katakana}p{Script=Han}でひらがな・カタカナ・漢字にマッチできます(ES2018+、MDN: Unicodeプロパティエスケープ)。
ReDoS(正規表現によるサービス拒否)を防ぐには?
ReDoSは悪意ある入力によって処理時間が指数関数的に増加する脆弱性です(OWASP: ReDoS)。ネストしたバックトラックを誘発する(a+)+のようなパターンを避け、入力長の制限で防ぎます。

正規表現を深く学ぶための書籍

PR

※ Amazon.co.jp のアソシエイトとしてサイト運営者は適格販売により収入を得ています。 書籍リンクはアフィリエイトリンクです。