パターンバリデーション — JSON Schemaでの正規表現
pattern キーワードを使用してJSON Schemaプロパティに正規表現パターンを適用します。電話番号、スラッグ、コードなどのフォーマットを正規表現で検証します。
Advanced Patterns
詳細な説明
JSON Schemaでの正規表現パターンの使用
pattern キーワードは文字列値に正規表現を適用します。これはJSON Schemaで最も強力なバリデーションツールの一つであり、format が提供するものを超えたカスタムフォーマットを強制できます。
構文
{
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
}
}
正規表現はECMA-262(JavaScript正規表現)構文に従います。
重要: アンカリング
JSON Schemaはパターンを暗黙的にアンカリングしません。[0-9]+ のパターンは部分文字列マッチを見つけるため、"abc123def" に一致します。文字列全体にマッチさせるには、^ と $ を使用します。
patternProperties キーワード
pattern がプロパティの値を検証するのに対し、patternProperties はプロパティの名前(キー)を検証します:
{
"type": "object",
"patternProperties": {
"^x-": { "type": "string" }
}
}
よく使われるパターン
| 用途 | パターン |
|---|---|
| HEXカラー | ^#[0-9a-fA-F]{6}$ |
| セマンティックバージョン | ^\\d+\\.\\d+\\.\\d+$ |
| ISO日付 | ^\\d{4}-\\d{2}-\\d{2}$ |
| スラッグ | ^[a-z0-9]+(-[a-z0-9]+)*$ |
ジェネレーターの制限
ジェネレーターは単一のサンプル値からパターンを推論できません。パターンは手動で追加するか、一般的なフォーマットを認識する高度なジェネレーターを使用する必要があります。
パフォーマンスの考慮事項
重いバックトラッキングを伴う複雑なパターンはバリデーションを遅くする可能性があります。パターンをできるだけシンプルに保ち、カタストロフィックバックトラッキングを引き起こす (a+)+ のようなネストされた量指定子を避けてください。
ユースケース
組み込みの format キーワードでカバーされない、カスタム識別子、製品コード、バージョン文字列、ファイル名、およびその他の特定のフォーマットに準拠する必要がある文字列フィールドにパターンバリデーションを使用します。