正規表現テスター
正規表現テスターの使い方
このツールは、正規表現がマッチする箇所をハイライト表示します。
「正規表現」と「テスト文字列」を入力すると、リアルタイムで判定を行います。
オプションでフラグを指定できます。
正規表現とは
正規表現(Regular Expression)は、文字列のパターンを表現するための記法です。
「特定の文字列が含まれているか」「メールアドレス形式かどうか」「数字だけかどうか」といった条件を、簡潔に記述できます。
JavaScript正規表現の特徴
JavaScriptの正規表現はECMA-262で定義され、Perl互換正規表現(PCRE)をベースにしつつも独自の進化を遂げています。他言語との主な差異を以下に示します。
| 機能 | JavaScript | Python (re) | PHP/PCRE | Java |
|---|---|---|---|---|
| 名前付きキャプチャ | (?<name>...) | (?P<name>...) | (?P<name>...) | (?<name>...) |
| 後読みアサーション | ✔ 固定長・可変長 | ✔ 固定長のみ | ✔ 可変長対応 | ✔ 固定長のみ |
| 再帰パターン | ✗ 非対応 | ✗ 非対応 | ✔ (?R) | ✗ 非対応 |
| 所有量指定子 | ✗ 非対応 | ✗ 非対応 | ✔ ++ | ✔ ++ |
| 条件付きパターン | ✗ 非対応 | ✔ | ✔ | ✗ 非対応 |
| Unicode カテゴリ | ✔ \p{}(u/v フラグ) | ✔ \p{} | ✔ \p{} | ✔ \p{} |
| インラインフラグ | ✗ 非対応 | ✔ (?i) | ✔ (?i) | ✔ (?i) |
| フラグ指定方法 | 末尾 or コンストラクタ引数 | re.compile() の引数 | パターン末尾 | Pattern.compile() |
正規表現のフラグ
正規表現の末尾に付けるオプションで、マッチの挙動を変更します。
本ツールでは、特によく使われる3つの主要フラグをサポートしています。
| フラグ | 名称 | 説明 |
g | Global(グローバル) | 最初の1致だけでなく、文字列全体からすべての一致を探します。 |
i | Ignore Case(大文字小文字の無視) | アルファベットの大文字と小文字を区別せずにマッチさせます。 |
m | Multiline(マルチライン) | ^(行頭)や $(行末)が、文字列全体ではなく「各行」の先頭と末尾に作用します。 |
その他のフラグ
u(Unicode): サロゲートペア(絵文字など)を正しく扱うためのフラグs(DotAll):.(ドット)が改行文字にも一致するようになりますy(Sticky):lastIndexプロパティで指定された位置からのみマッチを試みます
クイックリファレンス
開発中によく使うメタ文字・量指定子の早見表です。
| メタ文字 | 意味 |
|---|---|
. | 改行以外の任意の1文字 |
^ | 行/文字列の先頭(m フラグで行頭) |
$ | 行/文字列の末尾(m フラグで行末) |
* | 直前のパターンの0回以上の繰り返し(最長) |
+ | 直前のパターンの1回以上の繰り返し(最長) |
? | 直前のパターンの0または1回(最長) |
*? | 0回以上の最短マッチ(非貪欲) |
+? | 1回以上の最短マッチ(非貪欲) |
{n} | 直前のパターンをちょうど n 回 |
{n,m} | n回以上 m回以下(最長) |
\d | 数字 [0-9] |
\D | 非数字 [^0-9] |
\w | 単語文字 [A-Za-z0-9_] |
\W | 非単語文字 |
\s | 空白文字(スペース・タブ・改行 等) |
\S | 非空白文字 |
\b | 単語境界 |
(?:...) | 非キャプチャグループ |
(?=...) | 前読みアサーション(肯定) |
(?!...) | 前読みアサーション(否定) |
(?<=...) | 後読みアサーション(肯定) |
(?<!...) | 後読みアサーション(否定) |
実践的なコード例
// ── バリデーション(g なし、i あり)
const emailRe = /^[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,}$/i;
const isValidEmail = (s) => emailRe.test(s);
// ── 全マッチ抽出(g + m)
const logText = `[ERROR] 2025-07-01 DB timeout
[WARN] 2025-07-01 Slow query
[ERROR] 2025-07-02 Connection refused`;
const errors = logText.match(/^\[ERROR\].+$/gm);
// → ["[ERROR] 2025-07-01 DB timeout", "[ERROR] 2025-07-02 Connection refused"]
ツール右上の「設定」ボタンから、これらを サンプルとして一括入力することができます。ぜひご利用ください。
よくある用途
- 特定の命名規則を持つIDなどのバリデーションコードをテストしたい
- サーバーログから特定のステータスコードやIPアドレスを抽出したい
- リファクタリング時に新旧パターンが同じ結果を返すかを比較検証したい
注意点
プライバシーについて
本ツールはブラウザ上で処理を行うため、入力されたデータが外部サーバーに送信されることはありません。

