pattern : String

pattern

String

A string instance is considered valid if the regular expression matches the instance successfully.

The pattern keyword in JSON Schema is designed to define a regular expression pattern that a string value within an instance must adhere to. This regular expression is specified as a string for the pattern keyword. It functions as follows:

  • Assigns a regular expression (following ECMA-262 dialect) to the pattern keyword to define the required format.
  • A string value is considered valid only if it successfully matches the specified pattern.
  • The regular expressions used with pattern are not implicitly anchored, requiring a complete match for validation. Partial matches are not accepted.

Examples

Schema with regular expression for email validation Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "string",
  "pattern": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
}
An instance adhering to the regular expression is valid Instance
"john.doe@example.com"
An instance not adhering to the regular expression is invalid Instance
"invalid@yahoo"
Schema with regular expression for password rules Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "string",
  "pattern": "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{8,}$"
}
An instance adhering to the regular expression is valid Instance
"MyStrongPass89"
An instance not adhering to the regular expression is invalid Instance
"password"
Schema with regular expression for usernames, including length restrictions Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "string",
  "pattern": "^[a-zA-Z0-9_]+$",
  "minLength": 5,
  "maxLength": 15
}
An instance with alphanumeric and underscore values, with a length between 5 and 15, is valid Instance
"foo_bar123"
An instance with special character in invalid Instance
"invalid#username"
An instance that matches the regex but goes out of bounds is invalid Instance
"username_toolong123"
  • This keyword can be combined with other string-related keywords, such as maxLength and minLength, for comprehensive validation.
Schema with regular expression for some specific pattern Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "string",
  "pattern": "apple"
}
An instance matching the pattern is valid Instance
"apple"
An instance is also valid if the pattern matches anywhere within the string Instance
"I love apples!"
  • When defining regular expressions, it’s crucial to note that a string is considered valid if the expression matches anywhere within it, as demonstrated in the above example.

  • To avoid this and ensure that the entire string exactly matches the pattern, you would surround the regular expression with ^ and $. See the example below.

Schema with a regular expression enforcing an exact pattern match Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "string",
  "pattern": "^apple$"
}
An instance matching the pattern is valid Instance
"apple"
An instance containing characters other than "apple" is invalid Instance
"I love apples!"