正規表現とは
正規表現は、文字列の検索条件をパターンで表す方法です。このツールはJavaScript / ECMAScript RegExp専用で、ブラウザ標準のnew RegExp(pattern, flags)により評価します。PCRE、PHP、Python、Ruby、Java、.NET、RE2などとは構文や結果が異なる場合があります。
正規表現テスターの使い方
pattern欄へ/を含めず正規表現本体を入力し、フラグを選び、テスト文字列を入力します。たとえばPattern \d+、Flags g、Text ID: 123 / 456では、123と456の2件が表示されます。
JavaScriptの正規表現フラグ
| flag | 意味 | 用途 |
|---|---|---|
| g | global | 複数マッチ |
| i | ignoreCase | 大文字・小文字を区別しない |
| m | multiline | 行ごとの先頭・末尾 |
| s | dotAll | ドットを改行にも一致 |
| u | Unicode | Unicode mode |
| v | Unicode Sets | Unicode集合記法 |
| y | sticky | 指定位置から連続一致 |
| d | indices | キャプチャ位置 |
g・i・m・sとは
gは全文から複数の一致を取得し、OFFでは最初の1件だけを取得します。iは大文字と小文字を区別しません。mは^と$を各行に適用し、sは.を改行にも一致させます。
u・vとは
uはUnicode mode、vはUnicode Sets modeです。両者は同時に指定できません。ブラウザが対応している場合、\p{Script=Hiragana}+のようなUnicode property escapesを利用できます。対応しないフラグは画面で無効になります。
キャプチャグループとは
Pattern (\d{4})-(\d{2})-(\d{2})とText 2026-08-14では、Group 1が2026、Group 2が08、Group 3が14になります。任意グループが参加しなかった場合は「未マッチ」と表示します。dフラグON時はブラウザが返す正確なgroup indicesも表示します。
名前付きキャプチャグループとは
(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})のように名前を付けると、year、month、dayとして結果を確認できます。
正規表現で置換する方法
上の日付PatternにReplacement $<day>/$<month>/$<year>を指定すると、14/08/2026になります。gがOFFなら最初の一致だけ、ONならすべての一致をJavaScript replace semanticsで置換します。
正規表現チートシート
.任意の1文字\d数字\wword character\s空白^先頭$末尾*0回以上+1回以上?0または1回{n,m}回数[]文字クラス()キャプチャ(?:)非キャプチャ|OR(?=...)肯定先読み(?!...)否定先読み(?<=...)肯定後読み(?<!...)否定後読み処理が遅くなる正規表現について
入れ子の量指定子などはcatastrophic backtrackingを起こすことがあります。1秒停止は安全性を完全に保証するものではありません。
HTMLやXMLを本格的に解析するときは、正規表現だけでなく用途に合うparserが必要になる場合があります。
よくある質問
絵文字でindexが見た目とずれるのはなぜですか?
JavaScript RegExpのindexはUTF-16 code unit位置のため、絵文字などでは見た目の文字数と異なる場合があります。