Regex データジェネレーター
正規表現にマッチするランダムデータを生成します
入力
出力
Readme
正規表現とは?
正規表現(regex)とは、検索パターンを定義する文字のシーケンスです。もともとは形式言語理論のために開発されましたが、現在ではほぼすべてのプログラミング言語やテキスト処理ツールで、stringのマッチング・検索・操作に広く使われています。[a-z]+@[a-z]+\.com のようなパターンは、シンプルなメールアドレスの構造を表しています。つまり、文字列、@ 記号、さらに文字列、ドット、そしてリテラルstring「com」という構成です。
検索用途にとどまらず、正規表現はデータ生成の設計図としても活用できます。マッチング処理を逆転させることで、regexエンジンは指定されたパターンに適合するランダムなstringを生成できます。これは、ソフトウェアテスト、プロトタイピング、そして実際のユーザー情報を使わずにリアルなモックデータでデータベースを埋める際に特に役立ちます。
ツールの説明
このツールは、入力した正規表現にマッチするランダムなstringを生成します。regexパターンを入力するか、組み込みプリセットから選択するだけで、最大1,000件のマッチする値を即座に生成できます。文字クラス、量指定子、グループ、選択、後方参照など、標準的なregex構文をすべてサポートしています。出力結果は、テストフィクスチャ、シードデータ、またはバリデーションスクリプトへの入力として直接利用できます。
機能
- 組み込みプリセット:メール、IPv4、UUID、米国電話番号、日付、HEXカラー、ナンバープレート、MACアドレスなど、よく使われるフォーマットに対応
- カスタムregex入力:JavaScript正規表現の完全な構文に対応
- 生成件数の調整:1回の実行で1〜1,000件の値を生成可能
- 最大繰り返し数の制御:上限なしの量指定子(
+、*、{n,})の展開回数を制限し、過度に長いstringの生成を防止 - 重複排除モード:出力の重複を除去し、パターンのエントロピーが不足して十分な数のユニークな値を生成できない場合は警告を表示
ユースケース
- ソフトウェアテスト:実際のユーザー情報を使わずに、自動テストスイートのテストフィクスチャやシードデータとして使える、有効なメールアドレス・UUID・IPアドレスを数百件生成できます。
- データベースのシーディング:カラムの制約やバリデーションルールに準拠した、リアルなモックデータを開発環境やステージング環境のデータベースに素早く投入できます。
- 正規表現の学習:パターンを記述してそれが生成するstringをすぐに確認することで、量指定子・文字クラス・グループの動作を直感的に理解できます。
オプションの説明
| オプション | 説明 |
|---|---|
| プリセット | 一般的なデータフォーマット向けの組み込みパターンを選択するか、「カスタム」を選んで独自のregexを記述します。プリセットを選択すると、regexパターンフィールドに自動的に入力されます。 |
| regexパターン | データ生成に使用する正規表現です。文字クラス([a-z])、量指定子({3,8}、+、*)、グループと選択((com|net|org))、特殊token(\d、\w)をサポートしています。 |
| 件数 | 生成するstringの数を1〜1,000の範囲で指定します。 |
| 最大繰り返し数 | 上限なしの量指定子の展開を制限します。たとえば、最大繰り返し数を10に設定すると、[a-z]+ パターンは最大10文字のstringを生成します。範囲:1〜100。 |
| ユニークな値のみ | 有効にすると、出力に重複するstringが含まれないようにします。パターンが十分なユニークな値を生成できない場合は、実際に生成された件数とともに警告が表示されます。 |
ヒント
- まずプリセットを選択して変更することで、regexパターンが生成データにどう反映されるかを学べます。
- 固定長の出力が必要な場合は、
{5,10}のような範囲指定ではなく、{8}のような厳密な量指定子を使用してください。 +や*を使用する際は、最大繰り返し数を小さくすることで、生成されるstringを短く読みやすく保てます。- 繰り返しを許容しない識別子やキーを生成する場合はユニークモードを有効にしてください。ただし、上限に達しないよう、十分なバリエーションを持つパターンを使用してください。
よくある質問
先読みや後読みは使えますか? このジェネレーターはrandexp.jsライブラリをベースにしており、JavaScriptのregex機能のほとんどをサポートしています。ただし、先読みと後読みは文字の内容を定義しないため、生成には対応していません。
要求した件数より少ない結果しか得られなかったのはなぜですか? 「ユニークな値のみ」が有効な場合、パターンの組み合わせが不足していて、要求した数のユニークなstringを生成できないことがあります。文字クラスを広げるか、量指定子の範囲を増やしてみてください。
出力は本当にランダムですか? 出力は疑似ランダムです。実行するたびに異なる結果が生成されますが、暗号学的に安全なランダム性ではありません。パスワードやセキュリティtoken の生成にはこのツールを使用しないでください。