エディター
入力または正規表現の実行を待機中…
アクション
この正規表現テスターを使う理由
- リアルタイムマッチング(オプションの「ライブ」モードで入力時に再実行)
- 構造化されたマッチリスト(開始インデックス、終了インデックス、値、名前付きキャプチャグループ)
- 完全なJavaScript/ECMAScript RegExp構文サポート(JSランタイムと同じエンジン)
- フラグ制御: g, i, m, s, u, y – 安全に組み合わせて実験可能
- 基本的なパフォーマンス分析(実行時間をミリ秒単位で表示)
- テキストのみのサマリー出力(チケット、ドキュメント、コミットメッセージへのコピー&ペーストに最適)
- 学習に最適:フルプロジェクトやテストスイートを実行せずにパターンを試せる
- 日常業務に理想的:ログ解析、検証、URL/ID抽出、簡単なデータクリーニング
- 大規模テキストマッチング時のUIフリーズを防ぐため、結果リストにソフトキャップを適用
🔧 正規表現テスターの使い方 for regex-tester
1. テストテキストを貼り付けまたは入力
検索対象のテキストを追加:ログ、スニペット、CSV断片、HTML、JSONなど、プレーンテキストであれば何でも可。
2. 正規表現パターンを記述
正規表現を**スラッシュで囲まずに**入力。例:基本的なメール形式パターンは<code>\b\w+@\w+\.\w+</code>、名前付きグループ付きは<code>(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})</code>。
3. フラグを設定(g, i, m, s, u, y)
<code>g</code>(グローバル)、<code>i</code>(大文字小文字区別なし)、<code>m</code>(マルチライン)などのフラグを切り替え。内部的にはJavaScriptと同様に<code>new RegExp(pattern, flags)</code>を構築。
4. マッチ&グループを確認
各マッチのインデックス、オプションの終了インデックス、キャプチャグループを確認。名前付きグループはJSON風マップで表示され、テストフィクスチャ、パーサー、ドキュメントへのコピーが可能。
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>が行境界にマッチ |
| s | DotAll | <code>.</code>が改行にもマッチ |
| u | Unicode | 最新エンジンで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
❓なぜ私の正規表現が何もマッチしないのですか?
.、?、+など)、2) 複数マッチを期待する際のgフラグ忘れ、3) アンカー(^、$)または単語境界(\b)の不足、4) JavaScriptエンジンがまだサポートしていない機能の使用(一部の後読みなど)。パターンを簡素化し、徐々に要素を追加してみてください。⏱️実行時間(ms)は何を意味しますか?
performance.now()を使用して計測されます。この値は、現在の入力に対して正規表現の実行にかかった時間のおおよその単一実行測定値です。明らかに高コストなパターンを発見するのに役立ちますが、完全なベンチマークや本番環境での性能保証ではありません。🔍最初のマッチとグローバルモードの違いは何ですか?
gフラグなしの場合、JavaScriptは**最初の**マッチのみを返します(存在する場合)。gフラグありの場合、テスターはinput.matchAll()を使用して**すべての**マッチ(安全な最大値まで)を収集し、インデックスとキャプチャグループを含みます。複数の出現を気にする場合は常にグローバルモードを使用してください。🌍Unicodeと<code>\p{...}</code>エスケープはサポートされていますか?
uフラグを有効にしてUnicodeモードを選択すると、最新のブラウザや最近のNode.jsバージョンで\p{Letter}や\p{Script=Greek}などの機能が利用可能になります。⚠️これは破滅的なバックトラッキングを検出できますか?
Pro Tips
正規表現は小さなパーツから構築しましょう。マッチする単純なものから始め、アンカー、グループ、量指定子を段階的に追加してください。
可能な限り名前付きキャプチャグループ(<code>(?<name>...)</code>)を使用してください。これによりマッチが自己文書化され、コードレビュー時に読みやすくなります。
<code>.*</code>とネストした量指定子には注意してください。大きな入力に対して深刻なバックトラッキングを引き起こす可能性があります。パターンをより具体的にするか、<code>{n,m}</code>で繰り返しを制限してください。
デバッグ時には、一時的に<code>g</code>フラグを削除し、最初のマッチに焦点を当ててメンタルモデルを簡素化してください。
Additional Resources
Other Tools
- CSSビューティファイア
- HTMLビューティファイア
- JavaScriptビューティファイア
- PHPビューティファイア
- カラーピッカー
- スプライト抽出ツール
- Base64デコーダー
- Base64エンコーダー
- C#フォーマッタ
- CSVフォーマッタ
- Dockerfile Formatter
- Elmフォーマッタ
- ENVフォーマッタ
- Goフォーマッタ
- GraphQLフォーマッタ
- HCLフォーマッタ
- INIフォーマッタ
- JSONフォーマッタ
- LaTeXフォーマッタ
- Markdownフォーマッタ
- Objective-Cフォーマッタ
- Php Formatter
- Protoフォーマッタ
- Pythonフォーマッタ
- Rubyフォーマッタ
- Rustフォーマッタ
- Scalaフォーマッタ
- シェルスクリプトフォーマッタ
- SQLフォーマッタ
- SVG フォーマッタ
- Swift フォーマッタ
- TOML フォーマッタ
- Typescript Formatter
- XML フォーマッタ
- YAML フォーマッタ
- Yarn フォーマッタ
- CSSミニファイア
- Html Minifier
- Javascript Minifier
- JSONミニファイア
- XML ミニファイア
- HTTPヘッダービューア
- PDFからテキストへ
- SERPランクチェッカー
- Whois ルックアップ