正規表現パターン — JSON Schemaでpatternを使う
JSON Schemaの pattern キーワードで正規表現による文字列バリデーションを行う方法を解説します。
String Constraints
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"phoneNumber": {
"type": "string",
"pattern": "^\\+[1-9]\\d{6,14}$"
},
"zipCode": {
"type": "string",
"pattern": "^\\d{5}(-\\d{4})?$"
},
"hexColor": {
"type": "string",
"pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$"
}
},
"required": ["phoneNumber"]
}Test Data
{
"phoneNumber": "+14155551234",
"zipCode": "90210-1234",
"hexColor": "#3b82f6"
}詳細な説明
JSON Schemaの pattern キーワードを使用すると、文字列が指定した正規表現パターンに一致するかを検証できます。パターンはECMAScript(JavaScript)の正規表現構文に基づいています。
重要なポイント:
patternは部分一致で判定されます。完全一致を要求するには^と$でアンカーする必要があります。- バックスラッシュはJSON文字列内でエスケープが必要です(
\\dで\dを表現)。 patternはformatよりも柔軟なカスタムバリデーションを提供します。
例えば、電話番号のバリデーションに pattern: "^\\+?[1-9]\\d{1,14}$" を使用すれば、E.164形式の国際電話番号を検証できます。郵便番号、商品コード、カスタムIDなど、特定のフォーマットに従う文字列の検証に最適です。
ユースケース
電話番号、郵便番号、商品コードなど、特定のパターンに従う文字列を検証する際に使用します。