パターンバリデーション — 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 キーワードでカバーされない、カスタム識別子、製品コード、バージョン文字列、ファイル名、およびその他の特定のフォーマットに準拠する必要がある文字列フィールドにパターンバリデーションを使用します。

試してみる — JSON Schema Generator

フルツールを開く