メインコンテンツへスキップ
Toolsbase Logo

正規表現テスター

正規表現パターンをリアルタイムでテスト・デバッグできます。マッチング結果のハイライト表示、グループ抽出、文字列置換に対応し、開発・テキスト処理での正規表現の作成と確認を効率化します。

最終更新:

使い方

使い方を開く
  1. 1

    正規表現パターンを入力

    上部の入力欄に正規表現パターンを入力します。必要に応じてフラグ(グローバル、大文字小文字無視など)を設定します。

  2. 2

    テスト文字列を入力

    パターンをテストしたい文字列を入力します。マッチ結果がリアルタイムで表示されます。

  3. 3

    結果を確認・置換

    マッチした箇所がハイライト表示されます。置換文字列を入力すると、置換結果のプレビューも確認できます。

正規表現パターン

//g
フラグ

テスト文字列

マッチ結果

マッチなし

置換

正規表現テスターとは

正規表現(Regular Expression、略してRegex)は、1950年代に数学者スティーブン・クリーネが正規言語の理論として定式化したパターンマッチングの仕組みです。1970年代にUNIXのテキスト処理ツール(grep、sed、awk)に実装されて以来、プログラミングにおける文字列処理の基盤技術として広く使われ続けています。現在ではJavaScript、Python、Java、Go、Rustなど主要な言語のほぼすべてが正規表現をサポートしており、入力バリデーション、ログ解析、テキスト変換など、開発者にとって不可欠なスキルの一つです。 正規表現テスターは、正規表現パターンをリアルタイムでテスト・デバッグできるオンラインツールです。具体的なユースケースとして、メールアドレス・電話番号・郵便番号などの入力バリデーションパターンの作成、Webサーバーやアプリケーションのログファイルからのエラーパターン抽出、CSVやTSVなど構造化テキストの特定フィールドの抜き出し、コードリファクタリング時の一括置換パターンの検証、HTMLやMarkdownからの特定要素の抽出などがあります。 実務上のTipsとして、正規表現を書く際は「まず単純なパターンから始めて段階的に条件を追加する」アプローチが効果的です。また、gフラグ(グローバル)を有効にすると全マッチが確認でき、mフラグ(複数行)を使えば行単位でのマッチングが可能になります。パフォーマンスの観点では、ネストした量指定子(例: (a+)+)はバックトラッキングの爆発(ReDoS)を引き起こす危険があるため、本ツールの実行時間表示で安全性を確認してください。 Toolsbaseの正規表現テスターは、ブラウザのJavaScriptエンジンを使用してローカルで実行されるため、テスト文字列が外部に送信されることはありません。

主な機能

  • リアルタイムマッチング - 入力と同時にマッチ結果を表示
  • グループ抽出 - キャプチャグループと名前付きグループの確認
  • 置換プレビュー - 置換結果を即座に確認、$1や$2でグループ参照
  • フラグ設定 - グローバル、大文字小文字無視、複数行など6種類のフラグ
  • 実行時間表示 - パフォーマンスの確認、ReDoS検出

こんな場面で役立ちます

  • メールアドレスや電話番号のバリデーションパターンを作成するとき
  • ログファイルから特定のパターンを抽出したいとき
  • テキストの一括置換パターンを確認したいとき
  • 複雑な正規表現のデバッグ・動作確認を行うとき
  • 正規表現の学習・練習をするとき

よくある質問

どの正規表現エンジンを使用していますか?

JavaScript(ECMAScript)の正規表現エンジンを使用しています。ほとんどのブラウザで動作する標準的な正規表現構文に対応していますが、一部の言語固有の機能(Perl、Python固有の構文など)は使用できない場合があります。

フラグの意味を教えてください

g(グローバル)は全マッチを検索、i(大文字小文字無視)は大小を区別しない、m(複数行)は^と$が各行に適用、s(dotAll)は.が改行にもマッチ、u(Unicode)はUnicode対応、y(スティッキー)は指定位置からのマッチを意味します。

パターンが遅い場合はどうすればいいですか?

実行時間が長い場合は警告が表示されます。ネストした量指定子(例: (a+)+)や、バックトラックが多いパターンは避けてください。アトミックグループや所有量指定子を使うか、パターンを単純化することをお勧めします。

グループ参照で$1、$2とは何ですか?

置換文字列で使用する特殊な記法で、$1は最初のキャプチャグループ、$2は2番目のグループに対応します。例えば、パターン「(\d+)-(\d+)」でマッチした「123-456」を「$2:$1」で置換すると「456:123」になります。

名前付きグループとは何ですか?

(?<name>pattern)の形式で定義するグループで、番号の代わりに名前でアクセスできます。複雑なパターンの可読性が向上し、置換時に$<name>で参照できます。

正規表現とは何ですか?初心者にもわかるように教えてください

正規表現とは、文字列のパターンを記述するための特殊な記法です。例えば「数字が3つ続く」パターンは \d{3} と書きます。メールアドレスの形式チェック、ログからのエラー抽出、テキストの一括置換など、文字列を扱うほぼすべてのプログラミングで活用できます。最初はシンプルなパターン(例: \d+ で数字の連続、[A-Z]+ で大文字の連続)から試してみることをお勧めします。

ReDoS(正規表現サービス拒否攻撃)とは何ですか?

ReDoS(Regular Expression Denial of Service)は、特定の入力に対して正規表現エンジンが極端に長い処理時間を要する脆弱性です。ネストした量指定子(例: (a+)+)や重複する文字クラスの組み合わせで発生しやすく、バックトラッキングの回数が指数的に増大します。本ツールでは実行時間を計測しており、処理が長い場合は警告が表示されるため、本番コードに組み込む前にパターンの安全性を確認できます。

先読み(lookahead)と後読み(lookbehind)とは何ですか?

先読み・後読みは、マッチ結果に含めずに前後の条件を指定できるアサーションです。肯定先読み (?=pattern) は「後にpatternが続く位置」、否定先読み (?!pattern) は「後にpatternが続かない位置」にマッチします。後読みも同様に (?<=pattern) と (?<!pattern) で指定します。例えば \d+(?=円) は「円の前の数字」にマッチし、結果には「円」は含まれません。パスワード強度チェックや複雑な抽出条件で重宝します。

JavaScriptとPythonやPerlで正規表現の書き方は違いますか?

基本的な構文(文字クラス、量指定子、グループ等)はほぼ共通ですが、言語固有の拡張構文に違いがあります。Pythonでは (?P<name>...) で名前付きグループを定義しますが、JavaScriptでは (?<name>...) です。Perlの所有量指定子(a++)やアトミックグループ((?>...))はJavaScriptでは使えません。本ツールはJavaScript(ECMAScript)エンジンで動作するため、Web開発での使用に最適です。

入力したデータはサーバーに送信されますか?

いいえ、処理はブラウザ内のJavaScriptエンジンで行われます。入力したパターンやテスト文字列が外部に送信されることはありません。