JavaScript 正規表現テスター
あなたのJavaScriptが実際に動くRegExpエンジンでパターンをテストします。ここでマッチするものは、コードの中でも同じようにマッチします。
JavaScript 正規表現テスター
ある言語で動く正規表現が、別の言語では失敗することがあります。だからJavaScriptのパターンを試すなら、JavaScriptのエンジンで試すのがいちばん確実です。このページは、名前付きグループを使った例を入れた状態で正規表現テスターを開きます。パターンは(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})、テスト文字列には日付が2つ、置換文字列は$<day>/$<month>/$<year>で、日付を日・月・年の順に書き換えます。
エンジンはあなたのブラウザーのもの
サーバーには何も送信されません。パターンはあなた自身のタブの中でnew RegExp()によってコンパイルされます。つまりChromeとEdgeではNode.jsの中でも動いているV8、FirefoxではSpiderMonkey、SafariではJavaScriptCoreです。3つとも同じECMAScriptのルールを実装しているので、ここで期待どおりに動くパターンは、現行バージョンであればフロントエンドやNodeのコードでも同じように動きます。
フラグ
| フラグ | 効果 |
|---|---|
g | 最初の1件だけでなく、すべてのマッチを探す。すべてを置換するのに必要 |
i | 大文字小文字を区別しない |
m | ^と$が、テキストの両端だけでなく改行ごとにマッチする |
s | .が改行にもマッチする |
u | Unicodeモード。UTF-16の単位ではなくコードポイント単位で扱い、\p{L}のようなプロパティエスケープが使える |
y | スティッキー。直前のマッチが終わった位置でのみマッチする |
d | 各グループの開始位置と終了位置を記録する。match.indicesを読むコード向け |
それ以外の文字は、パターンがエンジンに届く前に取り除かれます。新しいvフラグも同様です。ggのように同じ文字を2回入力するとエラーになり、ツールはエンジン自身のメッセージを表示します。
JavaScriptでつまずきやすい点
\wと\bが知っているのはAからZ、aからz、0から9とアンダースコアだけなので、éやペルシア語の文字は認識されません。uフラグを付ければ、\p{L}があらゆる文字体系の文字にマッチします。- 文字列の中ではバックスラッシュをすべて二重にする必要があります。
new RegExp("\\d+")はリテラルの/\d+/と同じパターンです。このテスターには、スラッシュの間に書くとおりの形でパターンを入力します。 gフラグ付きの正規表現はtest()やexec()の呼び出しをまたいでlastIndexを覚えているため、同じ文字列を2回テストすると、trueの次にfalseが返ることがあります。- パターンにただの文字列を渡した
replace()は、最初の1か所しか変えません。g付きの正規表現か、replaceAll()を使ってください。 - 置換文字列では、
$1が最初のグループ、$<name>が名前付きグループ、$&がマッチ全体、$$がドル記号そのものを表します。
名前付きグループで置換する
置換文字列欄はString.prototype.replace()と同じルールに従います。サンプルのパターンなら、$<day>/$<month>/$<year>が2026-09-24を24/09/2026に変えます。名前付きグループは、何か月たってもパターンを読みやすく保ってくれます。match.groups.yearのほうがmatch[1]よりずっと意味が伝わります。
関連ページ
出来合いのパターンから始めるならURLの正規表現、重複した単語を直すなら正規表現による検索と置換をどうぞ。メールアドレスや、数字・電話番号・IPアドレスについては、メールアドレスの正規表現ガイドと数字・電話番号・IPアドレスの正規表現ガイドで詳しく説明しています。