正規表現チェックツール

パターンを入力し、フラグを選んで、テスト用の文字列を貼り付けるだけです。一致したすべての箇所と位置、番号付き・名前付きキャプチャグループの中身を表示し、パターンの各部分を日本語で説明します。判定にはブラウザのJavaScriptエンジン(ECMAScript)を使います。

前後のスラッシュは付けずに入力します(/\d+/ ではなく \d+)。パターンはリンクに含まれ共有できますが、テスト文字列は含まれません。
入力内容はこのブラウザーにのみ保存されます。

検索対象の文章です。ブラウザ内だけで使われ、リンクには含まれません。

入力したテキストはブラウザー内にとどまります。送信・保存されず、アドレスバーにも表示されません。

結果

結果
2件一致
一致
No.位置長さ一致
15102026-09-27
221102026-10-15
一致ごとのグループ
No.グループ名前値
11jahr2026
12monat09
13tag27
21jahr2026
22monat10
23tag15
パターンの解説
要素意味
(?<jahr>グループ1(名前「jahr」)の開始
› \d数字0〜9(半角のみ、全角数字は含まない)
› {4}直前の要素をちょうど4回
)グループの終わり
-文字列「-」そのもの
(?<monat>グループ2(名前「monat」)の開始
› \d数字0〜9(半角のみ、全角数字は含まない)
› {2}直前の要素をちょうど2回
)グループの終わり
-文字列「-」そのもの
(?<tag>グループ3(名前「tag」)の開始
› \d数字0〜9(半角のみ、全角数字は含まない)
› {2}直前の要素をちょうど2回
)グループの終わり
JavaScriptのリテラル
/(?<jahr>\d{4})-(?<monat>\d{2})-(?<tag>\d{2})/g

計算方法

この正規表現チェックツールは、ECMA-262規格で定められ、ブラウザに実装されているJavaScriptの正規表現を使います。ここで動くパターンは、Chrome、Firefox、Safari、Node.jsの String.prototype.match、matchAll、replace、RegExp.prototype.test でもまったく同じように動きます。

正規表現のテスト方法

  1. 前後のスラッシュを付けずにパターンを入力します(例:\d+)。
  2. 必要なフラグにチェックを入れます(すべて探すなら g、大文字・小文字を無視するなら i)。
  3. テスト文字列を貼り付け、一致箇所、グループ、パターンの解説を確認します。

例:パターン \d{4} に g フラグを付けると、「1990年生まれ、2015年に上京」から2件見つかります。1990が位置0、2015が位置9です(位置は0から数えます)。

結果の見方

日本語の文字を扱うときの注意

JavaScriptの \w は半角英数字とアンダースコアだけで、ひらがな・カタカナ・漢字には一致しません。\d も半角の0〜9だけで、全角数字(123)は含みません。一方、\s は全角スペースにも一致します。日本語を指定するには u フラグを付けて \p{Script=Hiragana}(ひらがな)、\p{Script=Katakana}(カタカナ)、\p{Script=Han}(漢字)を使います。例:[\p{Script=Han}\p{Script=Hiragana}]+

フラグ

g は最初の1件だけでなくすべての一致を探し、i は大文字・小文字を区別せず、m は ^ と $ を行ごとに働かせ、s はドットを改行にも一致させます。u は絵文字などの基本多言語面の外の文字を1文字として扱い、\p{L}(あらゆる文字)のようなUnicodeプロパティを使えるようにします。v は u の新しい版で、[\p{L}--[a-z]] のような集合演算ができます。u と v は同時に使えません。y(sticky)は途切れずに続く一致だけを探します。

無限ループとフリーズの防止

a* や \b のようなパターンは空の一致を生むことがあります。このツールはJavaScript自体と同じく、その場合に1文字(u/v ではコードポイント1つ)進めるので、無限ループにはなりません。一致は最大1,000件まで探します。

より危険なのは破滅的バックトラック(ReDoS)です。(a+)+$ のように量指定子を入れ子にすると、一致しない文字列に対して試す組み合わせが指数関数的に増え、30文字でも数分かかることがあります。そのため検索は別スレッドで実行し、2秒で打ち切ります。ページが固まることはありません。自分のコードでも、特にユーザー入力に対してはこうしたパターンを避けてください。

ほかの言語の正規表現との違い

PCRE(PHP)、Python、Java、.NETとは細部が異なります。JavaScriptには強欲な量指定子(a++)、アトミックグループ、\A・\Z アンカーがありません。Pythonでは名前付きグループを伝統的に (?P<name>…) と書きます。

テスト文字列は送信も保存もされず、リンクにも含まれません。リンクに入るのはパターンとフラグだけです。

よくある質問

正規表現とは何ですか?

文字列のパターンを記号で表す書き方です。たとえば \d{3}-\d{4} は「数字3桁、ハイフン、数字4桁」を表し、郵便番号の「123-4567」に一致します。検索、置換、入力チェックに使われます。

正規表現をチェックするには?

上の欄にスラッシュなしでパターンを入力し、必要なフラグを選んで文章を貼り付けます。一致した箇所がすぐに文章中で色付き表示され、位置とともに一覧になります。その下に各グループが取り出した中身が表示されます。

\d や \s はどういう意味ですか?

\d は半角数字0〜9の1文字、\s はスペース、全角スペース、タブ、改行などの空白文字1文字です。大文字にした \D、\S はその反対で、数字以外・空白以外の1文字を表します。

キャプチャとは何ですか?

丸かっこ ( ) で囲んだ部分の一致を取り出す仕組みです。(?<name>…) と書くと名前を付けられ、コードでは match.groups.name、置換文字列では $<name>、パターン内では後方参照 \k<name> で使えます。

エスケープとは何ですか?

.、*、?、( のように特別な意味を持つ記号を、ただの文字として扱うことです。前にバックスラッシュを付けて \. と書くと、任意の1文字ではなくピリオドそのものに一致します。

ひらがなや漢字に一致させるには?

\w は日本語に一致しないため、u フラグを付けて \p{Script=Hiragana}、\p{Script=Katakana}、\p{Script=Han} を使います。範囲指定の [ぁ-ん] も使えますが、「ゔ」など一部の文字が漏れることがあります。

最長一致と最短一致の違いは?

最長一致(*、+、{2,})はできるだけ多く、後ろに ? を付けた最短一致(*?、+?)はできるだけ少なく一致します。「<b>x</b>」に対して <.+> は全体に、<.+?> は「<b>」だけに一致します。

PythonやJavaでも同じ結果になりますか?

単純なパターンなら多くの場合同じですが、保証されるのはJavaScriptだけです。PHP(PCRE)やJava、Pythonには強欲な量指定子や \A などの追加の構文があり、細かな動きが異なります。

出典・根拠

更新日:

関連ツール