@@ -47,7 +47,42 @@ static PatternFormat pattern(String name, String regex) {
47
47
"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\ .){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$" ));
48
48
COMMON_BUILTIN_FORMATS .add (pattern ("ipv6" ,
49
49
"^\\ s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)(\\ .(25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)(\\ .(25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)(\\ .(25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)(\\ .(25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)(\\ .(25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)(\\ .(25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)(\\ .(25[0-5]|2[0-4]\\ d|1\\ d\\ d|[1-9]?\\ d)){3}))|:)))(%.+)?\\ s*$" ));
50
- COMMON_BUILTIN_FORMATS .add (pattern ("uri" , "^([A-Za-z][A-Za-z0-9+.-]+):(\\ /\\ /([^@]+@)?([A-Za-z0-9.\\ -_~]+)(:\\ d+)?)?((?:[A-Za-z0-9-._~]|%[A-Fa-f0-9]|[!$&'()*+,;=:@])+(?:\\ /(?:[A-Za-z0-9-._~]|%[A-Fa-f0-9]|[!$&'()*+,;=:@])*)*|(?:\\ /(?:[A-Za-z0-9-._~]|%[A-Fa-f0-9]|[!$&'()*+,;=:@])+)*)?(\\ ?(?:[A-Za-z0-9-._~]|%[A-Fa-f0-9]|[!$&'()*+,;=:@]|[/?])*)?(\\ #(?:[A-Za-z0-9-._~]|%[A-Fa-f0-9]|[!$&'()*+,;=:@]|[/?])*)?$" ));
50
+
51
+ // From RFC 3986
52
+ // ALPHA [A-Za-z]
53
+ // DIGIT [0-9]
54
+ // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
55
+ // => [A-Za-z][A-Za-z0-9+.-]*
56
+ // unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
57
+ // => [A-Za-z0-9._~\-]
58
+ // gen-delims [:/?#\[\]@]
59
+ // sub-delims [!$&'()*+,;=]
60
+ // reserved = = gen-delims / sub-delims
61
+ // => [:/?#\[\]@!$&'()*+,;=]
62
+ // pct-encoded = "%" HEXDIG HEXDIG
63
+ // => [A-Za-z0-9%] (approximation)
64
+ // pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
65
+ // => [A-Za-z0-9._~\-%!$&'()*+,;=:@]
66
+ // userinfo = *( unreserved / pct-encoded / sub-delims / ":" )
67
+ // => [A-Za-z0-9._~\-%!$&'()*+,;=:]*
68
+ // host = IP-literal / IPv4address / reg-name
69
+ // => [A-Za-z0-9._~\-!$&'()*+,;=%:\[\]]* (approximation)
70
+ // port = *DIGiT
71
+ // => [0-9]*
72
+ // authority = [ userinfo "@" ] host [ ":" port ]
73
+ // => ([A-Za-z0-9._~\-%!$&'()*+,;=:]*@)?[A-Za-z0-9._~\-!$&'()*+,;=%:\[\]]*(:[0-9]*)?
74
+ // hier-part = "//" authority path-abempty
75
+ // / path-absolute
76
+ // / path-rootless
77
+ // / path-empty
78
+ // => (\/\/([A-Za-z0-9._~\-%!$&'()*+,;=:]*@)?[A-Za-z0-9._~\-!$&'()*+,;=%:\[\]]*(:[0-9]*)?)?[A-Za-z0-9._~\-%!$&'()*+,;=:@\/]* (approximation)
79
+ // query = *( pchar / "/" / "?" )
80
+ // => [A-Za-z0-9._~\-%!$&'()*+,;=:@\/?]*
81
+ // fragment = *( pchar / "/" / "?" )
82
+ // => [A-Za-z0-9._~\-%!$&'()*+,;=:@\/?]*
83
+ // uri = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
84
+ COMMON_BUILTIN_FORMATS .add (pattern ("uri" ,
85
+ "^[A-Za-z][A-Za-z0-9+.-]*:(\\ /\\ /([A-Za-z0-9._~\\ -%!$&'()*+,;=:]*@)?[A-Za-z0-9._~\\ -!$&'()*+,;=%:\\ [\\ ]]*(:[0-9]*)?)?[A-Za-z0-9._~\\ -%!$&'()*+,;=:@\\ /]*([?][A-Za-z0-9._~\\ -%!$&'()*+,;=:@\\ /?]*)?([#][A-Za-z0-9._~\\ -%!$&'()*+,;=:@\\ /?]*)?" ));
51
86
COMMON_BUILTIN_FORMATS .add (pattern ("color" ,
52
87
"(#?([0-9A-Fa-f]{3,6})\\ b)|(aqua)|(black)|(blue)|(fuchsia)|(gray)|(green)|(lime)|(maroon)|(navy)|(olive)|(orange)|(purple)|(red)|(silver)|(teal)|(white)|(yellow)|(rgb\\ (\\ s*\\ b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\ b\\ s*,\\ s*\\ b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\ b\\ s*,\\ s*\\ b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\ b\\ s*\\ ))|(rgb\\ (\\ s*(\\ d?\\ d%|100%)+\\ s*,\\ s*(\\ d?\\ d%|100%)+\\ s*,\\ s*(\\ d?\\ d%|100%)+\\ s*\\ ))" ));
53
88
COMMON_BUILTIN_FORMATS .add (pattern ("hostname" ,
0 commit comments