正規表現パターン — 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 を表現)。
  • patternformat よりも柔軟なカスタムバリデーションを提供します。

例えば、電話番号のバリデーションに pattern: "^\\+?[1-9]\\d{1,14}$" を使用すれば、E.164形式の国際電話番号を検証できます。郵便番号、商品コード、カスタムIDなど、特定のフォーマットに従う文字列の検証に最適です。

ユースケース

電話番号、郵便番号、商品コードなど、特定のパターンに従う文字列を検証する際に使用します。

試してみる — JSON Schema Validator

フルツールを開く