The format keyword performs a semantic validation on data. The value of this keyword must be a string, representig a format. The keyword behavior depends on the data type, meaning that the same format name for a string behaves differently on a number, or is missing, because not all data types must implement a format and usually different data types have different formats.

{
    "format": "date"
}
Input Status
"1970-01-01" valid
510 valid - not a string
"test" invalid - not a date

Provided formats

Opis JSON Schema provides all the formats for string type defined in the JSON Schema specifications. You can also add your own formats.

Please note that formats starting with idn- or iri require PHP intl extension in order to work correctly.

date

A string is valid against this format if it represents a date in the following format: YYYY-MM-DD.

{
    "type": "string",
    "format": "date"
}
Input Status
"1970-01-01" valid
"Jan. 1st, 1970" invalid

time

A string is valid against this format if it represents a time in the following format: hh:mm:ss.sTZD.

{
    "type": "string",
    "format": "time"
}
Input Status
"10:05:08" valid
"10:05:08.5" valid
"10:05:08-02:30" valid
"10:05:08Z" valid
"45:60:62" invalid
"10:05" invalid
"1 pm" invalid

date-time

A string is valid against this format if it represents a date-time in the following format: YYYY:MM::DDThh:mm:ss.sTZD.

{
    "type": "string",
    "format": "date-time"
}
Input Status
"1970-01-01T10:05:08" valid
"1970-01-01T10:05:08.10" valid
"1970-01-01T10:05:08+01:00" valid
"Jan. 1st, 1970 at 1 pm" invalid

duration

A string is valid against this format if it represents a duration as specified by ISO 8601. You can create durations in PHP with the help of DateInterval class.

{
    "type": "string",
    "format": "duration"
}
Input Status
"P4DT12H30M5S valid
"PT1D" invalid

regex

A string is valid against this format if it represents a valid regular expression.

{
    "type": "string",
    "format": "regex"
}
Input Status
"^[a-z]+$" valid
"a/b" invalid - slash is not escaped
"(a" invalid - incomplete group

email

A string is valid against this format if it represents a valid e-mail address format.

{
    "type": "string",
    "format": "email"
}
Input Status
"john@example.com" valid
"john(at)example.com" invalid

idn-email

A string is valid against this format if it represents a valid idn e-mail address format.

{
    "type": "string",
    "format": "idn-email"
}
Input Status
"실례@실례.테스트" valid
"john@example.com" valid
"1234" invalid

hostname

A string is valid against this format if it represents a valid hostname.

{
    "type": "string",
    "format": "hostname"
}
Input Status
"www.example.com" valid
"xn--4gbwdl.xn--wgbh1c" valid
"not_a_valid_host_name" invalid

idn-hostname

A string is valid against this format if it represents a valid IDN hostname.

{
    "type": "string",
    "format": "idn-hostname"
}
Input Status
"실례.테스트" valid
"〮실례.테스트" invalid

ipv4

A string is valid against this format if it represents a valid IPv4 address.

{
    "type": "string",
    "format": "ipv4"
}
Input Status
"192.168.0.1" valid
"192.168.1.1.1" invalid

ipv6

A string is valid against this format if it represents a valid IPv6 address.

{
    "type": "string",
    "format": "ipv6"
}
Input Status
"::1" valid
"12345::" invalid

json-pointer

A string is valid against this format if it represents a valid (absolute) json pointer.

{
    "type": "string",
    "format": "json-pointer"
}
Input Status
"/a/b/c" valid
"/a/~" invalid

relative-json-pointer

A string is valid against this format if it represents a valid relative json pointer.

{
    "type": "string",
    "format": "relative-json-pointer"
}
Input Status
"0/a/b" valid
"5/a/b#" valid
"2#" valid
"/a/b" invalid

uri

A string is valid against this format if it represents a valid uri.

{
    "type": "string",
    "format": "uri"
}
Input Status
"http://example.com/path?qs=v&qs2[1]=3#fragment" valid
"http://a_example.com" invalid
"aaa/bbb.html" invalid

uri-reference

A string is valid against this format if it represents a valid uri or uri reference.

{
    "type": "string",
    "format": "uri-reference"
}
Input Status
"aaa/bbb.html" valid
"?a=b" valid
"#fragment" valid
"http://example.com" valid
"http://a_example.com" invalid

uri-template

A string is valid against this format if it represents a valid uri template or uri-reference.

{
    "type": "string",
    "format": "uri-template"
}
Input Status
"/{+file}.html" valid
"http://example.com/dictionary/{term:1}/{term}" valid
"{?q,lang}" valid
"http://a_example.com/file.php{?q,r}" invalid

iri

A string is valid against this format if it represents a valid IRI.

{
    "type": "string",
    "format": "iri"
}
Input Status
"http://ƒøø.ßår/?∂éœ=πîx#πîüx" valid
"http://ƒøø.com/blah_(wîkïpédiå)_blah#ßité-1" valid
"http:// ƒøø.com" invalid

iri-reference

A string is valid against this format if it represents a valid IRI reference.

{
    "type": "string",
    "format": "iri-reference"
}
Input Status
"//ƒøø.ßår/?∂éœ=πîx#πîüx" valid
"#ƒrägmênt" valid
"http://ƒøø.com/blah_(wîkïpédiå)_blah#ßité-1" valid
"\\\\WINDOWS\\filëßåré" invalid

uuid

A string instance is valid against this attribute if it is a valid string representation of a UUID.

{
    "type": "string",
    "format": "uuid"
}
Input Status
"2EB8AA08-AA98-11EA-B4AA-73B441D16380" valid
"2eb8aa08-aa98-11ea-b4aa-73b441d16380" valid
"2GB8AA08-AA98-11EA-B4AA-73B441D16380" invalid - invalid char G
"2eb8aa08aa9811eab4aa73b441d16380" invalid - no dashes