正規表現をサンプルでテストしてキャプチャを確認
1つの正規表現をサンプルの一覧に当てはめ、どれが一致し各グループが何を取り出したかを表示します。3つのサンプルのうち2つが一致し、Gadget: 7からはGadgetと7が取り出されます。各行は個別に試されます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- パターン
- ^(?<name>[A-Za-z]+):\s*(\d+)$
- フラグ
- i
- サンプル
- Widget: 42, not a record, Gadget: 7
- サンプル数
- 3
- 一致数
- 2
慎重に選んだ文字列を1つだけ使って正規表現を試しても、問題点をすべて見つけられるとは限りません。実際の入力には、正しいレコード、似ていても拒否すべき値、大文字と小文字の違い、省略可能な項目、繰り返し値などがあります。このツールは、ECMAScript の正規表現パターンとフラグを、複数のサンプル文字列へ個別に適用します。一致したサンプル、グローバル検索時のすべての一致、実際に参加した番号付きおよび名前付きグループを報告します。無効なパターンや未対応のフラグは、結果を返す前に明確なエラーとなります。
パターンを十分に検証できるサンプルを用意します
正規表現は、JavaScript に渡す本体だけを入力し、前後のスラッシュは付けないでください。リテラルのスラッシュと区切り文字が混同されないよう、フラグは別に指定します。次に、一致してほしい例だけでなく、意図的に一致させない例も追加してください。
一般的な正常値、境界値、大文字と小文字を区別しないフラグを確認する表記違い、空または不完全な値、よく似ていても対象外となる文字列を含めると効果的です。部分文字列の検索ではなくサンプル全体を検証する場合は、先頭と末尾のアンカーが特に重要です。
各サンプルは新しい正規表現で個別に評価されるため、グローバル検索や sticky 検索の状態が次の文字列へ引き継がれることはありません。結果には元のサンプルと一致の真偽値が残るので、目視確認にも自動テストのアサーションにも利用できます。これにより、パターンへの漠然とした信頼を、想定範囲を明示する再現可能なテスト例へ変えられます。
一致結果とキャプチャを正確に読み取ります
一致した各サンプルでは、matches 配列に一致した正確な文字列と、JavaScript の文字列インデックスに従う0始まりの UTF-16 位置が入ります。番号付きキャプチャグループは、開き括弧の順に番号と値を持つオブジェクトとして示されます。グローバルフラグがなければ、ECMAScript は各サンプルの最初の一致だけを返します。
フラグがあれば、重ならない一致を順にすべて調べます。長さ0の一致では安全に位置を進め、無限ループを防ぎます。sticky 検索は JavaScript 本来の動作を維持し、現在位置で正確に一致する必要があります。
真の結果だけで判断せず、一致文字列とキャプチャの両方を確認してください。境界が広すぎる、狭すぎる、または誤った選択肢に結び付いている場合も発見できます。
エラーと制限を自動チェックに活用します
サンプルの評価を始める前に、パターンとフラグをコンパイルします。フラグは対応する ECMAScript のものだけを使用でき、重複は認められません。この早期エラーにより、壊れた式が「すべて不一致」という誤解を招く結果を返すことを防げます。
この機能は決定的に動作し、ネットワーク、モデル推論、乱数、時刻を使用しないため、同じ入力から同じ構造の出力が得られます。パターン長、サンプル数、各サンプルの長さ、サンプルごとの一致数には実用的な上限があります。パターン変更後も、採用例と除外例の動作を明確に確認できます。
活用例
抽出パターンを検証します
ログ、ファイル名、識別子、レコードのパターンを実例で試し、抽出された各項目を確認できます。
キャプチャグループを調査します
アプリケーションへ組み込む前に、複数の入力形式で番号付きと名前付きのキャプチャを比較できます。
よくある質問
サンプルに一致が1件しか表示されないのはなぜですか?
グローバルフラグがなければ最初の一致だけが返ります。重ならない一致をすべて得るには g を追加してください。
テスト用のサンプルにはどんな文字列を入れればよいですか?
普通の正しい値、境界にあたる値、大文字と小文字を変えた値、空や途中までの値、そして一致してはいけない似た文字列を入れるのがおすすめです。受け入れる値と拒否する値の両方を確認できます。
値全体をチェックするとき、先頭と末尾の記号が必要なのはなぜですか?
先頭を表す記号と末尾を表す記号を付けると、一致がサンプルの最初から始まり最後で終わる必要があります。付けないと、一部に探している文字列が含まれているだけの値も一致と判定されます。
あるサンプルの結果が次のサンプルに影響しますか?
いいえ、影響しません。サンプルごとに新しく用意した正規表現で個別に評価するため、前の行での検索位置などが次の行に持ち越されることはありません。
正規表現に誤りがあるとどうなりますか?
サンプルを試す前に正規表現とオプションを確認し、誤りがあれば分かりやすく知らせます。壊れた式のせいで「一致なし」の一覧が表示され、誤解を招くことはありません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/web/regex-test \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pattern":"^(?<name>[A-Za-z]+):\\s*(\\d+)$","samples":["Widget: 42","not a record","Gadget: 7"]}'const res = await fetch("https://api.kit.forhosting.com/web/regex-test", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pattern": "^(?<name>[A-Za-z]+):\\s*(\\d+)$",
"samples": [
"Widget: 42",
"not a record",
"Gadget: 7"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/regex-test",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pattern": "^(?<name>[A-Za-z]+):\\s*(\\d+)$",
"samples": [
"Widget: 42",
"not a record",
"Gadget: 7"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/regex-test", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pattern":"^(?<name>[A-Za-z]+):\\\\s*(\\\\d+)$","samples":["Widget: 42","not a record","Gadget: 7"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pattern":"^(?<name>[A-Za-z]+):\\s*(\\d+)$","samples":["Widget: 42","not a record","Gadget: 7"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/regex-test", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"pattern": "^(?<name>[A-Za-z]+):\\s*(\\d+)$",
"samples": [
"Widget: 42",
"not a record",
"Gadget: 7"
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.regex_test",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_pattern_chars | 2000 |
max_samples | 500 |
max_sample_chars | 100000 |
max_matches_per_sample | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
一致結果とキャプチャを正確に読み取ります
名前付きキャプチャが実際に参加した場合は、named_groups にも表示されます。参加しなかった省略可能グループは出力されないため、曖昧な null フィールドを避けながら、参加したグループの元の番号を保てます。
エラーと制限を自動チェックに活用します
ECMAScript がパターンを拒否した場合、リクエストは invalid_input エラーとなり、メッセージには無効な正規表現であることと実行環境の有用な詳細が示されます。継続的インテグレーションでは、代表的なサンプルを利用側コードと一緒に保存し、この機能を呼び出して matched_count と重要なキャプチャ値を検証してください。作成時はブラウザー実行が便利で、自動化する場合の API 料金は1リクエストあたり $0.002 です。
連携の活用例
正規表現の変更を保護します
一致例と不一致例を回帰テストに残し、パターンの範囲が意図せず変わることを検出できます。
技術的な質問
パターンに区切り用のスラッシュは必要ですか?
いいえ。正規表現の本体だけを送り、g、i、m などのフラグは flags フィールドへ指定してください。
正規表現パターンが無効な場合はどうなりますか?
サンプルを評価する前に、リクエストが invalid_input エラーとして終了します。
名前付きキャプチャグループも含まれますか?
はい。参加した名前付きキャプチャは named_groups に、番号付きキャプチャは各グループ番号とともに表示されます。
料金はいくらですか?
API は1リクエストあたり $0.002 です。このページのブラウザー実行は無料でご利用いただけます。