CONVERT
正規表現テスター
正規表現を貼ると、実データでマッチ箇所をその場でハイライト。うまくいかないときは、AIへの修正依頼プロンプトも作れます。
\d+・テスト文字列 注文番号: 1234 合計: 5678円 → 数字部分がハイライトされます。ライブテスター
パターン
テスト文字列
マッチ結果 — 6件
生年月日: 1990-01-15、電話: 03-1234-5678
199001150312345678よく使うプリセット
クリックするとパターンとサンプル文字列がテスターに入ります。
AIに修正を依頼
思ったようにマッチしない・しすぎるときは、下のプロンプトをコピーして ChatGPT や Claude に貼り付け。今のパターン・テスト文字列・マッチ状況をそのまま渡して直してもらえます。
修正依頼プロンプト
以下の JavaScript 正規表現をレビューし、必要なら修正してください。 現在のパターン: /\d+/g テスト文字列: """ 生年月日: 1990-01-15、電話: 03-1234-5678 """ 現在マッチしている箇所(6件): 「1990」 「01」 「15」 「03」 「1234」 「5678」 【依頼したいこと】 - マッチさせたい例: (ここに書く) - マッチさせたくない例: (ここに書く) 修正後のパターンを /パターン/フラグ の形式で示し、変更点と理由も簡潔に説明してください。
リファレンス
文字クラス
| 構文 | 意味 | 例 | 説明 |
|---|---|---|---|
. | 任意の1文字(改行除く) | 「abc」「a1c」にマッチ | |
\d | 数字([0-9] 相当) | 「123」にマッチ | |
\D | 数字以外 | 「abc」にマッチ | |
\w | 単語文字([a-zA-Z0-9_]) | 「hello_1」にマッチ | |
\W | 単語文字以外 | 「!@#」にマッチ | |
\s | 空白文字(スペース・タブ・改行など) | 「a b」にマッチ | |
\S | 空白以外 | 「hello」にマッチ | |
[abc] | a・b・c のいずれか1文字 | 母音1文字 | |
[^abc] | a・b・c 以外の1文字 | 数字以外 | |
[a-z] | a 〜 z の範囲 | 英字1文字 |
量指定子
| 構文 | 意味 | 例 | 説明 |
|---|---|---|---|
* | 0回以上(貪欲) | 「」「a」「aaa」にマッチ | |
+ | 1回以上(貪欲) | 「a」「aaa」にマッチ | |
? | 0または1回(貪欲) | 「color」「colour」にマッチ | |
{n} | ちょうど n 回 | 4桁の数字 | |
{n,} | n 回以上 | 2桁以上の数字 | |
{n,m} | n 〜 m 回 | 2〜4桁の数字 | |
*? | 0回以上(非貪欲・最短マッチ) | 最短のタグにマッチ | |
+? | 1回以上(非貪欲) | 最短の a+ にマッチ | |
?? | 0または1回(非貪欲) | できるだけ短く |
アンカー
| 構文 | 意味 | 例 | 説明 |
|---|---|---|---|
^ | 文字列(または行)の先頭 | 「Hello」で始まる | |
$ | 文字列(または行)の末尾 | 「end」で終わる | |
\b | 単語の境界 | 単語「word」のみ | |
\B | 単語境界以外 | 「concatenate」の cat |
グループ
| 構文 | 意味 | 例 | 説明 |
|---|---|---|---|
(abc) | キャプチャグループ | グループ1・2に数値を格納 | |
(?:abc) | 非キャプチャグループ(グループ化のみ) | 「ababab」にマッチ | |
(?<name>abc) | 名前付きキャプチャグループ | groups.year で参照 | |
\1 | 後方参照(グループ1の内容を再マッチ) | 「hello hello」にマッチ | |
\k<name> | 名前付き後方参照 | 開き引用符と閉じが同じ |
選択・先読み・後読み
| 構文 | 意味 | 例 | 説明 |
|---|---|---|---|
a|b | a または b(選択) | 「cat」か「dog」 | |
(?=abc) | 肯定先読み(abc の直前) | 「100 USD」の 100 | |
(?!abc) | 否定先読み(abc の直前でない) | USD の前以外の数字 | |
(?<=abc) | 肯定後読み(abc の直後) | 「$100」の 100 | |
(?<!abc) | 否定後読み(abc の直後でない) | $の後以外の数字 |
エスケープ・特殊文字
| 構文 | 意味 | 例 | 説明 |
|---|---|---|---|
\. | リテラルのドット | 「3.14」にマッチ(3X14 はマッチしない) | |
\n | 改行 | 改行を含む文字列 | |
\t | タブ | タブ区切り | |
\r | キャリッジリターン | Windows 改行 | |
\0 | Null 文字 | バイナリデータで使用 | |
\uXXXX | Unicode コードポイント(4桁16進) | 「あ」にマッチ |
フラグ
| 構文 | 意味 | 例 | 説明 |
|---|---|---|---|
g | グローバル(全マッチを返す) | 「1 2 3」から 1,2,3 すべて取得 | |
i | 大文字小文字を区別しない | 「Hello」「HELLO」もマッチ | |
m | 複数行モード(^ $ が各行に対応) | 各行の先頭にマッチ | |
s | dotAll(. が改行にもマッチ) | 「a\nb」にもマッチ | |
u | Unicode モード(サロゲートペア対応) | 絵文字など4バイト文字 | |
y | スティッキー(前回マッチの直後から検索) | 位置を維持したまま連続マッチ |
その他
| 構文 | 意味 | 例 | 説明 |
|---|---|---|---|
(?i:abc) | インライン修飾子(一部のエンジンのみ) | JS では未対応 | |
[\u3040-\u309F] | ひらがな Unicode 範囲 | ひらがな1文字以上 | |
[\u30A0-\u30FF] | カタカナ Unicode 範囲 | カタカナ1文字以上 | |
[\u4E00-\u9FFF] | CJK漢字 Unicode 範囲(主要) | 漢字1文字以上 | |
[\uFF01-\uFF60] | 全角ASCII(記号・英数) | 全角英数や記号 |
よくある質問
gフラグを付けなくても全マッチが取得できるのはなぜですか?
内部的には常にgフラグを付けて評価しているため、チェックを外していてもマッチ一覧・ハイライトは全件表示されます。gフラグの表示上のオン/オフは、実際にコピーする正規表現リテラルに反映されます。
プリセットを選ぶとテスト文字列が変わることがあるのはなぜですか?
テスト文字列が初期状態(未編集・空欄・別のプリセットのサンプル)のときだけ、そのプリセットの動きが分かるサンプル文字列に差し替えています。自分で入力・貼り付けした文字列は上書きされません。
置換で $1 や $2 はどう使いますか?
パターン内のキャプチャグループ(()で囲んだ部分)に、出現順で $1、$2 …と番号が振られます。置換文字列にこれを書くと、そのグループがマッチした内容に置き換わります。名前付きキャプチャグループ((?<name>...))にも対応しています。
パターンを入力してもブラウザが固まることがあるのはなぜですか?
特定のパターン(入れ子の量指定子など)は「破滅的なバックトラック」と呼ばれる現象を起こし、長い入力に対して計算量が爆発的に増えることがあります(ReDoS)。固まった場合はパターンを見直すか、タブを再読み込みしてください。
対応していない正規表現の書き方はありますか?
ブラウザのJavaScriptエンジン(ES2022以降)が対応する構文のみ使えます。名前付きキャプチャグループや後読み(lookbehind)は比較的新しい機能のため、古いブラウザでは動作しない場合があります。
uフラグはいつ使いますか?
絵文字などサロゲートペアの文字を \u{1F600} のようなコードポイント表記で書くときや、文字を正しく1文字単位で扱いたいときに付けます。uフラグを付けると構文チェックが厳密になるため、これまで動いていたパターンがエラーになることがあります(その場合はエラーメッセージが表示されます)。
共有リンクは何を含んでいますか?
「共有リンクをコピー」で、いまのパターン・フラグ・テスト文字列をURLのクエリに載せたリンクをコピーします。そのURLを開くと同じ状態が再現されるので、レビュー依頼やメモ代わりに使えます。テスト文字列もURLに含まれる点にご注意ください。