Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 6 additions & 14 deletions schemas/2020-12/ieee/posix/2017/path.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "IEEE Std 1003.1-2017 POSIX File Path)",
"title": "IEEE Std 1003.1-2017 POSIX File Path",
"description": "IEEE Std 1003.1-2017 POSIX pathname",
"examples": [
"/",
Expand All @@ -12,17 +12,9 @@
],
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://pubs.opengroup.org/onlinepubs/9699919799/" ],
"anyOf": [
{
"$ref": "./path-absolute.json"
},
{
"$ref": "./path-relative.json"
},
{
"$comment": "A pathname beginning with exactly two slashes is a valid pathname with implementation-defined interpretation, though not an Absolute Pathname",
"type": "string",
"pattern": "^//([^/].*)?$"
}
]
"type": "string",
"not": {
"$comment": "Cannot contain null bytes",
"pattern": "\u0000"
}
}
3 changes: 0 additions & 3 deletions schemas/2020-12/ietf/encoding/base16.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.rfc-editor.org/rfc/rfc4648.html#section-8" ],
"type": "string",
"not": {
"pattern": "[\\x00-\\x1F]"
},
"pattern": "^([0-9A-Fa-f]{2})*$",
"contentEncoding": "base16"
}
3 changes: 0 additions & 3 deletions schemas/2020-12/ietf/http/method.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,5 @@
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.rfc-editor.org/rfc/rfc9110#section-9" ],
"type": "string",
"not": {
"pattern": "[\\x00-\\x1F\\x7F]"
},
"pattern": "^[!#$%&'*+\\-.0-9A-Z^_`a-z|~]+$"
}
4 changes: 0 additions & 4 deletions schemas/2020-12/ietf/language/3066/tag-syntax.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,5 @@
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.rfc-editor.org/rfc/rfc3066.html" ],
"type": "string",
"not": {
"$comment": "Cannot contain whitespace or control characters",
"pattern": "[\\s]"
},
"pattern": "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"
}
15 changes: 2 additions & 13 deletions schemas/2020-12/ietf/uri/url.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "RFC 3986 Uniform Resource Locator (URL)",
"description": "A locatable absolute Uniform Resource Identifier (URI)",
"$comment": "Given the referenced URI schema, a locator is exactly a URI whose character after the scheme colon is a slash, question mark, hash, or the end of the string",
"examples": [
"https://example.com/path/to/resource?query=value#section",
"http://user:pass@192.168.1.1:8080/api/v1",
Expand All @@ -12,17 +13,5 @@
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.rfc-editor.org/rfc/rfc3986#section-3" ],
"$ref": "./uri.json",
"anyOf": [
{
"$comment": "With authority",
"pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*://"
},
{
"$comment": "Rootless-path URIs such as mailto and urn are not syntactically distinguishable as locators, so only path-absolute and empty paths qualify",
"not": {
"pattern": "^[^:]+://"
},
"pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*:(?:/[^?#]*)?(?:\\?[^#]*)?(?:#.*)?$"
}
]
"pattern": "^[A-Za-z][A-Za-z0-9+\\-.]*:(?:[/?#]|$)"
}
5 changes: 4 additions & 1 deletion schemas/2020-12/ietf/uri/urn.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@
"urn:example:foo/bar/"
],
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.rfc-editor.org/rfc/rfc8141#section-2" ],
"x-links": [
"https://www.rfc-editor.org/rfc/rfc8141#section-2",
"https://www.rfc-editor.org/rfc/rfc2141#section-2.1"
],
"$ref": "./uri.json",
"not": {
"$comment": "Disallow reserved NID value 'urn'",
Expand Down
4 changes: 2 additions & 2 deletions schemas/2020-12/iso/currency/2015/historical/alpha-code.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "ISO 4217:2015 Alphabetic Currency and Precious Metal Code (Historical)",
"description": "A three-letter alphabetic code including withdrawn currencies and precious metals (2025-03-31)",
"title": "ISO 4217:2015 Alphabetic Currency Code (Historical)",
"description": "A three-letter alphabetic code including withdrawn currencies (2025-03-31)",
"examples": [ "ADP", "AFA", "ALK", "ANG" ],
"deprecated": true,
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "ISO 4217:2015 Numeric Currency and Precious Metal Code (Historical)",
"description": "A three-digit numeric code including withdrawn currencies and precious metals (2025-03-31)",
"title": "ISO 4217:2015 Numeric Currency Code (Historical)",
"description": "A three-digit numeric code including withdrawn currencies (2025-03-31)",
"examples": [ 4, 8, 20, 24 ],
"deprecated": true,
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
Expand Down
5 changes: 2 additions & 3 deletions schemas/2020-12/iso/datetime/2019/date/calendar-extended.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$schema": "urn:sourcemeta:std:ietf:jsonschema:2020-12:dialect:format-assertion",
"title": "ISO 8601-1:2019 Calendar Date (Extended Format)",
"description": "A complete representation of a calendar date in extended format [YYYY][\"-\"][MM][\"-\"][DD] (§5.2.2.1 b)",
"$comment": "This schema validates day/month combinations (i.e rejects April 31) but does not validate leap years. February 29 is accepted for any year, and leap year validation must be performed by the consumer",
"examples": [
"1985-04-12",
"2000-01-01",
Expand All @@ -14,5 +13,5 @@
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.iso.org/standard/70907.html" ],
"type": "string",
"pattern": "^([0-9]{4}-(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|[0-9]{4}-(0[469]|11)-(0[1-9]|[12][0-9]|30)|[0-9]{4}-02-(0[1-9]|1[0-9]|2[0-9]))$"
"format": "date"
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "ISO 8601-1:2019 Duration (Alternative Ordinal Basic Format)",
"description": "A duration in alternative basic format with ordinal date P[YYYYDDD]T[HHMMSS] (§5.5.2.4)",
"$comment": "Alternative-format durations are quantities, not dates: the day field is capped at its carry-over point and years are unsigned",
"examples": [ "P0002178T223355", "P0001001T000000", "P0001365T235959" ],
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.iso.org/standard/70907.html" ],
"type": "string",
"pattern": "^P(?:[0-9]{4}|[+-][0-9]{5,})(?:0[0-9][1-9]|0[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-6])T(?:[01][0-9]|2[0-3])(?:[0-5][0-9])(?:[0-5][0-9])$"
"pattern": "^P[0-9]{4}(?:[0-2][0-9]{2}|3[0-5][0-9]|36[0-5])T(?:[01][0-9]|2[0-3])(?:[0-5][0-9])(?:[0-5][0-9])$"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: The day portion of the pattern now incorrectly allows 000 as an ordinal day value. Ordinal day numbering starts at 001, not 000, so a value like P0001000T000000 will be incorrectly accepted. The old pattern's sub-patterns 0[0-9][1-9] and 0[1-9][0-9] properly excluded 000, but the simplified [0-2][0-9]{2} in the new pattern allows it. Consider using (?:00[1-9]|0[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-5]) to keep the hardening while preserving the 001–365 range.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At schemas/2020-12/iso/datetime/2019/duration/ordinal-basic.json, line 10:

<comment>The day portion of the pattern now incorrectly allows `000` as an ordinal day value. Ordinal day numbering starts at 001, not 000, so a value like `P0001000T000000` will be incorrectly accepted. The old pattern's sub-patterns `0[0-9][1-9]` and `0[1-9][0-9]` properly excluded 000, but the simplified `[0-2][0-9]{2}` in the new pattern allows it. Consider using `(?:00[1-9]|0[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-5])` to keep the hardening while preserving the 001–365 range.</comment>

<file context>
@@ -2,9 +2,10 @@
   "x-links": [ "https://www.iso.org/standard/70907.html" ],
   "type": "string",
-  "pattern": "^P(?:[0-9]{4}|[+-][0-9]{5,})(?:0[0-9][1-9]|0[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-6])T(?:[01][0-9]|2[0-3])(?:[0-5][0-9])(?:[0-5][0-9])$"
+  "pattern": "^P[0-9]{4}(?:[0-2][0-9]{2}|3[0-5][0-9]|36[0-5])T(?:[01][0-9]|2[0-3])(?:[0-5][0-9])(?:[0-5][0-9])$"
 }
</file context>
Suggested change
"pattern": "^P[0-9]{4}(?:[0-2][0-9]{2}|3[0-5][0-9]|36[0-5])T(?:[01][0-9]|2[0-3])(?:[0-5][0-9])(?:[0-5][0-9])$"
"pattern": "^P[0-9]{4}(?:00[1-9]|0[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-5])T(?:[01][0-9]|2[0-3])(?:[0-5][0-9])(?:[0-5][0-9])$"

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "ISO 8601-1:2019 Duration (Alternative Ordinal Extended Format)",
"description": "A duration in alternative extended format with ordinal date P[YYYY-DDD]T[HH:MM:SS] (§5.5.2.4)",
"$comment": "Alternative-format durations are quantities, not dates: the day field is capped at its carry-over point and years are unsigned",
"examples": [
"P0002-178T22:33:55",
"P0001-001T00:00:00",
Expand All @@ -10,5 +11,5 @@
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.iso.org/standard/70907.html" ],
"type": "string",
"pattern": "^P(?:[0-9]{4}|[+-][0-9]{5,})-(?:0[0-9][1-9]|0[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-6])T(?:[01][0-9]|2[0-3]):(?:[0-5][0-9]):(?:[0-5][0-9])$"
"pattern": "^P[0-9]{4}-(?:[0-2][0-9]{2}|3[0-5][0-9]|36[0-5])T(?:[01][0-9]|2[0-3]):(?:[0-5][0-9]):(?:[0-5][0-9])$"
}
2 changes: 1 addition & 1 deletion schemas/2020-12/iso/datetime/2019/duration/weeks.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.iso.org/standard/70907.html" ],
"type": "string",
"pattern": "^P[0-9]+(?:\\.[0-9]+)?W$"
"pattern": "^P[0-9]+(?:[.,][0-9]+)?W$"
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.iso.org/standard/70907.html" ],
"type": "string",
"pattern": "^(?:P[0-9]+(?:\\.[0-9]+)?W|P[0-9]+(?:\\.[0-9]+)?Y|P[0-9]+Y[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+(?:\\.[0-9]+)?D|P[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+(?:\\.[0-9]+)?D|P[0-9]+(?:\\.[0-9]+)?D|PT[0-9]+(?:\\.[0-9]+)?H|PT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|PT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|PT[0-9]+(?:\\.[0-9]+)?M|PT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|PT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+YT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+YT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+YT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+Y[0-9]+MT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+MT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+MT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+MT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+MT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+MT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+M[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?S)/([0-9]{4}(0[13578]|1[02])(0[1-9]|[12][0-9]|3[01])|[0-9]{4}(0[469]|11)(0[1-9]|[12][0-9]|30)|[0-9]{4}02(0[1-9]|1[0-9]|2[0-9]))T([01][0-9]|2[0-3])[0-5][0-9]([0-5][0-9]|60)$"
"pattern": "^(?:P[0-9]+(?:[.,][0-9]+)?W|P[0-9]+(?:[.,][0-9]+)?Y|P(?:[0-9]+Y)?[0-9]+(?:[.,][0-9]+)?M|P(?:[0-9]+Y)?(?:[0-9]+M)?[0-9]+(?:[.,][0-9]+)?D|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T[0-9]+(?:[.,][0-9]+)?H|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T(?:[0-9]+H)?[0-9]+(?:[.,][0-9]+)?M|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T(?:[0-9]+H)?(?:[0-9]+M)?[0-9]+(?:[.,][0-9]+)?S)/([0-9]{4}(0[13578]|1[02])(0[1-9]|[12][0-9]|3[01])|[0-9]{4}(0[469]|11)(0[1-9]|[12][0-9]|30)|[0-9]{4}02(0[1-9]|1[0-9]|2[0-9]))T([01][0-9]|2[0-3])[0-5][0-9]([0-5][0-9]|60)$"
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.iso.org/standard/70907.html" ],
"type": "string",
"pattern": "^(?:P[0-9]+(?:\\.[0-9]+)?W|P[0-9]+(?:\\.[0-9]+)?Y|P[0-9]+Y[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+(?:\\.[0-9]+)?D|P[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+(?:\\.[0-9]+)?D|P[0-9]+(?:\\.[0-9]+)?D|PT[0-9]+(?:\\.[0-9]+)?H|PT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|PT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|PT[0-9]+(?:\\.[0-9]+)?M|PT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|PT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+YT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+YT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+YT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+Y[0-9]+MT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+MT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+MT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+MT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+MT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+MT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+M[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?S)/([0-9]{4}-(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|[0-9]{4}-(0[469]|11)-(0[1-9]|[12][0-9]|30)|[0-9]{4}-02-(0[1-9]|1[0-9]|2[0-9]))T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)$"
"pattern": "^(?:P[0-9]+(?:[.,][0-9]+)?W|P[0-9]+(?:[.,][0-9]+)?Y|P(?:[0-9]+Y)?[0-9]+(?:[.,][0-9]+)?M|P(?:[0-9]+Y)?(?:[0-9]+M)?[0-9]+(?:[.,][0-9]+)?D|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T[0-9]+(?:[.,][0-9]+)?H|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T(?:[0-9]+H)?[0-9]+(?:[.,][0-9]+)?M|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T(?:[0-9]+H)?(?:[0-9]+M)?[0-9]+(?:[.,][0-9]+)?S)/([0-9]{4}-(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|[0-9]{4}-(0[469]|11)-(0[1-9]|[12][0-9]|30)|[0-9]{4}-02-(0[1-9]|1[0-9]|2[0-9]))T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)$"
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.iso.org/standard/70907.html" ],
"type": "string",
"pattern": "^(?:P[0-9]+(?:\\.[0-9]+)?W|P[0-9]+(?:\\.[0-9]+)?Y|P[0-9]+Y[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+(?:\\.[0-9]+)?D|P[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+(?:\\.[0-9]+)?D|P[0-9]+(?:\\.[0-9]+)?D|PT[0-9]+(?:\\.[0-9]+)?H|PT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|PT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|PT[0-9]+(?:\\.[0-9]+)?M|PT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|PT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+YT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+YT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+YT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+Y[0-9]+MT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+MT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+MT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+MT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+MT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+MT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+M[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?S)/[0-9]{4}(00[1-9]|0[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-6])T([01][0-9]|2[0-3])[0-5][0-9]([0-5][0-9]|60)$"
"pattern": "^(?:P[0-9]+(?:[.,][0-9]+)?W|P[0-9]+(?:[.,][0-9]+)?Y|P(?:[0-9]+Y)?[0-9]+(?:[.,][0-9]+)?M|P(?:[0-9]+Y)?(?:[0-9]+M)?[0-9]+(?:[.,][0-9]+)?D|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T[0-9]+(?:[.,][0-9]+)?H|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T(?:[0-9]+H)?[0-9]+(?:[.,][0-9]+)?M|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T(?:[0-9]+H)?(?:[0-9]+M)?[0-9]+(?:[.,][0-9]+)?S)/[0-9]{4}(00[1-9]|0[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-6])T([01][0-9]|2[0-3])[0-5][0-9]([0-5][0-9]|60)$"
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@
"x-license": "https://github.com/sourcemeta/std/blob/main/LICENSE",
"x-links": [ "https://www.iso.org/standard/70907.html" ],
"type": "string",
"pattern": "^(?:P[0-9]+(?:\\.[0-9]+)?W|P[0-9]+(?:\\.[0-9]+)?Y|P[0-9]+Y[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+(?:\\.[0-9]+)?D|P[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+(?:\\.[0-9]+)?D|P[0-9]+(?:\\.[0-9]+)?D|PT[0-9]+(?:\\.[0-9]+)?H|PT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|PT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|PT[0-9]+(?:\\.[0-9]+)?M|PT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|PT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+YT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+YT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+YT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+YT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+Y[0-9]+MT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+MT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+MT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+MT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+Y[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+MT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+MT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+MT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+MT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+M[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+M[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+M[0-9]+DT[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?H|P[0-9]+DT[0-9]+H[0-9]+(?:\\.[0-9]+)?M|P[0-9]+DT[0-9]+H[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?M|P[0-9]+DT[0-9]+M[0-9]+(?:\\.[0-9]+)?S|P[0-9]+DT[0-9]+(?:\\.[0-9]+)?S)/[0-9]{4}-(00[1-9]|0[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-6])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)$"
"pattern": "^(?:P[0-9]+(?:[.,][0-9]+)?W|P[0-9]+(?:[.,][0-9]+)?Y|P(?:[0-9]+Y)?[0-9]+(?:[.,][0-9]+)?M|P(?:[0-9]+Y)?(?:[0-9]+M)?[0-9]+(?:[.,][0-9]+)?D|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T[0-9]+(?:[.,][0-9]+)?H|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T(?:[0-9]+H)?[0-9]+(?:[.,][0-9]+)?M|P(?:[0-9]+Y)?(?:[0-9]+M)?(?:[0-9]+D)?T(?:[0-9]+H)?(?:[0-9]+M)?[0-9]+(?:[.,][0-9]+)?S)/[0-9]{4}-(00[1-9]|0[1-9][0-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-6])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)$"
}
Loading
Loading