エディター

入力または正規表現の実行を待機中…

アクション

?
?
?

概要 オンライン正規表現テスター

テキストを貼り付け、正規表現パターンを記述し、フラグを切り替えて即座にマッチを確認できます。この正規表現テスターは、最新の JavaScript ランタイムと同じ RegExp エンジンを使用しているため、ここで表示される内容はフロントエンドコード、Node.js スクリプト、またはサーバーサイドバリデーションで得られる結果と同じです。名前付きキャプチャグループ、先読み/後読み、Unicode モードは、ランタイムがサポートしている場合に利用できます。

この正規表現テスターを使う理由

  • リアルタイムマッチング(オプションの「ライブ」モードで入力時に再実行)
  • 構造化されたマッチリスト(開始インデックス、終了インデックス、値、名前付きキャプチャグループ)
  • 完全なJavaScript/ECMAScript RegExp構文サポート(JSランタイムと同じエンジン)
  • フラグ制御: g, i, m, s, u, y – 安全に組み合わせて実験可能
  • 基本的なパフォーマンス分析(実行時間をミリ秒単位で表示)
  • テキストのみのサマリー出力(チケット、ドキュメント、コミットメッセージへのコピー&ペーストに最適)
  • 学習に最適:フルプロジェクトやテストスイートを実行せずにパターンを試せる
  • 日常業務に理想的:ログ解析、検証、URL/ID抽出、簡単なデータクリーニング
  • 大規模テキストマッチング時のUIフリーズを防ぐため、結果リストにソフトキャップを適用

🔧 正規表現テスターの使い方 for regex-tester

1

1. テストテキストを貼り付けまたは入力

検索対象のテキストを追加:ログ、スニペット、CSV断片、HTML、JSONなど、プレーンテキストであれば何でも可。

2

2. 正規表現パターンを記述

正規表現を**スラッシュで囲まずに**入力。例:基本的なメール形式パターンは<code>\b\w+@\w+\.\w+</code>、名前付きグループ付きは<code>(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})</code>。

3

3. フラグを設定(g, i, m, s, u, y)

<code>g</code>(グローバル)、<code>i</code>(大文字小文字区別なし)、<code>m</code>(マルチライン)などのフラグを切り替え。内部的にはJavaScriptと同様に<code>new RegExp(pattern, flags)</code>を構築。

4

4. マッチ&グループを確認

各マッチのインデックス、オプションの終了インデックス、キャプチャグループを確認。名前付きグループはJSON風マップで表示され、テストフィクスチャ、パーサー、ドキュメントへのコピーが可能。

5

5. サマリーをコピー

テキストサマリーをクイックレポートとして使用:インデックスとグループ付きのマッチリストを表示し、チケット、コードレビューコメント、チートシートへの貼り付け準備完了。

正規表現構文&エンジン詳細

文字クラス&基本

JavaScript RegExpエンジンでサポートされるコアビルディングブロック。

パターン意味
.改行以外の任意の文字(<code>s</code>フラグ時を除く)<code>a.c</code> → <code>abc</code>にマッチ
\d, \w, \s数字、単語文字、空白文字<code>\d+</code> → <code>123</code>
\D, \W, \S上記の否定バージョン<code>\S+</code> → 非空白の連続
[abc]文字セット<code>[aeiou]</code> → 単一の母音
[^abc]否定セット<code>[^0-9]</code> → 非数字
^, $入力(または<code>m</code>フラグ時の行)の開始と終了<code>^Hello</code>, <code>!$</code>

量指定子

前のトークンの繰り返し。貪欲および非貪欲な動作があります。

パターン意味
?0回または1回<code>colou?r</code> → <code>color</code>と<code>colour</code>にマッチ
*0回以上<code>a*b</code> → <code>b</code>, <code>aaab</code>
+1回以上<code>\d+</code> → <code>1</code>, <code>123</code>
{n}ちょうどn回<code>a{3}</code> → <code>aaa</code>
{n,}n回以上<code>\d{3,}</code> → <code>123</code>, <code>1234</code>
{n,m}n回からm回<code>a{2,4}</code> → <code>aa</code>, <code>aaa</code>, <code>aaaa</code>

グループ、先読み/後読み & 名前付きキャプチャ

現代のJavaScriptエンジンが提供するより高度な機能。

機能構文
キャプチャグループ(...)<code>(\d{3})-(\d{2})</code> → エリアコード + サフィックス
非キャプチャグループ(?:...)<code>(?:https?|ftp)://</code>
後方参照\1, \2, ...<code>(\w)\1</code> → <code>aa</code>, <code>bb</code>
先読み(?=...), (?!...)<code>\w+(?=! )</code> → <code>! </code>の前の単語
後読み*(?<=...), (?<!...)<code>(?<=#)\w+</code> → <code>#</code>の後のテキスト(*最新エンジンで)
名前付きグループ(?<name>...)<code>(?<year>\d{4})</code> → 結果内の<code>groups.year</code>

フラグ(オプション)

テスターのフラグはJavaScriptのRegExpフラグに直接対応しています。

フラグ名前効果
gグローバル最初の一致だけでなく全ての一致を検索
i大文字小文字を無視大文字小文字を区別しないマッチング
mマルチライン<code>^</code>と<code>$</code>が行境界にマッチ
sDotAll<code>.</code>が改行にもマッチ
uUnicode最新エンジンでUnicodeモードとプロパティエスケープを有効化
yスティッキー現在のインデックスのみで一致(<code>lastIndex</code>と併用)

パフォーマンスと安全性

基盤となるJavaScriptエンジンは正規表現を同期的に実行します。UIの応答性を維持するため、テスターは収集する一致の数を制限しています(例:グローバルモードでの最初の500ヒット)。これによりUIの過負荷を防ぎますが、複雑または重要なパターンに対する完全なパフォーマンス監査の代わりにはなりません。

コマンドライン正規表現ツール

ここでパターンが動作したら、同じまたは類似の正規表現をターミナル、スクリプト、CIジョブで再利用できます:

Linux / macOS

grepでの検索(拡張正規表現)

grep -E 'pattern' file.txt

指定されたパターンに一致する行を検索

sedでの検索と置換

sed -E 's/pattern/replacement/g' input.txt > output.txt

テキストファイルの一括置換

Windows / PowerShell

PowerShell正規表現検索

Select-String -Pattern '\d{3}-\d{2}-\d{4}' -Path logs.txt

ログファイル内の米国式SSNパターンを検索(例)

PowerShell正規表現置換

(Get-Content input.txt) -replace 'old', 'new' | Set-Content output.txt

シンプルな正規表現ベースの置換

実用的な正規表現アプリケーション

Webとフロントエンド開発

  • フォームでのメールアドレス、ユーザー名、スラッグ、カスタムIDの検証
  • URLやパスからルートパラメータを抽出
  • クライアントサイド検証のためのパターンを迅速にプロトタイピング
// 基本的なメール形式の検証
/^[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}$/i.test(email);
// ルートパラメータ: /post/123
const match = pathname.match(/^\/post\/(\d+)/);

ログ、データとバックエンド

  • ログ行からタイムスタンプとレベルを解析
  • 空白文字の正規化と乱雑なテキストのクリーニング
  • 非構造化コンテンツからID、メールアドレス、参照を抽出
// 繰り返される空白文字の圧縮
const normalized = text.replace(/\s+/g, ' ').trim();
// シンプルなログ行マッチャー
const m = line.match(/\[(?<date>\d{4}-\d{2}-\d{2})] (?<level>INFO|ERROR): (?<msg>.*)/);

データクリーニングとクイックスクリプト

  • 解析前に不要なHTMLタグや属性を除去
  • 長いテキストブロブからすべてのURL、メールアドレス、IDを抽出
  • 別のシステムにインポートするためのデータセットフィールドを準備する

❓ Frequently Asked Questions

なぜ私の正規表現が何もマッチしないのですか?

よくある落とし穴: 1) 特殊文字のエスケープ忘れ(.?+など)、2) 複数マッチを期待する際のgフラグ忘れ、3) アンカー(^$)または単語境界(\b)の不足、4) JavaScriptエンジンがまだサポートしていない機能の使用(一部の後読みなど)。パターンを簡素化し、徐々に要素を追加してみてください。

⏱️実行時間(ms)は何を意味しますか?

各実行はperformance.now()を使用して計測されます。この値は、現在の入力に対して正規表現の実行にかかった時間のおおよその単一実行測定値です。明らかに高コストなパターンを発見するのに役立ちますが、完全なベンチマークや本番環境での性能保証ではありません。

🔍最初のマッチとグローバルモードの違いは何ですか?

gフラグなしの場合、JavaScriptは**最初の**マッチのみを返します(存在する場合)。gフラグありの場合、テスターはinput.matchAll()を使用して**すべての**マッチ(安全な最大値まで)を収集し、インデックスとキャプチャグループを含みます。複数の出現を気にする場合は常にグローバルモードを使用してください。

🌍Unicodeと<code>\p{...}</code>エスケープはサポートされていますか?

はい、JavaScriptエンジンがサポートしている場合。uフラグを有効にしてUnicodeモードを選択すると、最新のブラウザや最近のNode.jsバージョンで\p{Letter}\p{Script=Greek}などの機能が利用可能になります。

⚠️これは破滅的なバックトラッキングを検出できますか?

テスターは実行時間を通じて遅いパターンのヒントを示すことができますが、破滅的なバックトラッキングを完全に防ぐことはできません:基盤となるエンジンは依然として同期的に実行されます。このツールを早期警告システムとして使用し、複雑なパターンは自身のコードベースで慎重にベンチマークとレビューを行ってください。

Pro Tips

Best Practice

正規表現は小さなパーツから構築しましょう。マッチする単純なものから始め、アンカー、グループ、量指定子を段階的に追加してください。

Best Practice

可能な限り名前付きキャプチャグループ(<code>(?<name>...)</code>)を使用してください。これによりマッチが自己文書化され、コードレビュー時に読みやすくなります。

Best Practice

<code>.*</code>とネストした量指定子には注意してください。大きな入力に対して深刻なバックトラッキングを引き起こす可能性があります。パターンをより具体的にするか、<code>{n,m}</code>で繰り返しを制限してください。

Best Practice

デバッグ時には、一時的に<code>g</code>フラグを削除し、最初のマッチに焦点を当ててメンタルモデルを簡素化してください。

Additional Resources

Other Tools