@@ -49,14 +49,18 @@ export const fullFormats: DefinedFormats = {
49
49
// duration: https://tools.ietf.org/html/rfc3339#appendix-A
50
50
duration : / ^ P (? ! $ ) ( ( \d + Y ) ? ( \d + M ) ? ( \d + D ) ? ( T (? = \d ) ( \d + H ) ? ( \d + M ) ? ( \d + S ) ? ) ? | ( \d + W ) ? ) $ / ,
51
51
uri,
52
- "uri-reference" : / ^ (?: [ a - z ] [ a - z 0 - 9 + \- . ] * : ) ? (?: \/ ? \/ (?: (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : ] | % [ 0 - 9 a - f ] { 2 } ) * @ ) ? (?: \[ (?: (?: (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 6 } | : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 5 } | (?: [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 4 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 1 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 3 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 2 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 2 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 3 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : [ 0 - 9 a - f ] { 1 , 4 } : | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 4 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : ) (?: [ 0 - 9 a - f ] { 1 , 4 } : [ 0 - 9 a - f ] { 1 , 4 } | (?: (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) \. ) { 3 } (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) ) | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 5 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : [ 0 - 9 a - f ] { 1 , 4 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 6 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : ) | [ V v ] [ 0 - 9 a - f ] + \. [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : ] + ) \] | (?: (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) \. ) { 3 } (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) | (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = ] | % [ 0 - 9 a - f ] { 2 } ) * ) (?: : \d * ) ? (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * | \/ (?: (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * ) ? | (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * ) ? (?: \? (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ / ? ] | % [ 0 - 9 a - f ] { 2 } ) * ) ? (?: # (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ / ? ] | % [ 0 - 9 a - f ] { 2 } ) * ) ? $ / i,
52
+ "uri-reference" :
53
+ / ^ (?: [ a - z ] [ a - z 0 - 9 + \- . ] * : ) ? (?: \/ ? \/ (?: (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : ] | % [ 0 - 9 a - f ] { 2 } ) * @ ) ? (?: \[ (?: (?: (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 6 } | : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 5 } | (?: [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 4 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 1 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 3 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 2 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 2 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 3 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : [ 0 - 9 a - f ] { 1 , 4 } : | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 4 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : ) (?: [ 0 - 9 a - f ] { 1 , 4 } : [ 0 - 9 a - f ] { 1 , 4 } | (?: (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) \. ) { 3 } (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) ) | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 5 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : [ 0 - 9 a - f ] { 1 , 4 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 6 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : ) | [ V v ] [ 0 - 9 a - f ] + \. [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : ] + ) \] | (?: (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) \. ) { 3 } (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) | (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = ] | % [ 0 - 9 a - f ] { 2 } ) * ) (?: : \d * ) ? (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * | \/ (?: (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * ) ? | (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * ) ? (?: \? (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ / ? ] | % [ 0 - 9 a - f ] { 2 } ) * ) ? (?: # (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' " ( ) * + , ; = : @ / ? ] | % [ 0 - 9 a - f ] { 2 } ) * ) ? $ / i,
53
54
// uri-template: https://tools.ietf.org/html/rfc6570
54
- "uri-template" : / ^ (?: (?: [ ^ \x00 - \x20 " ' < > % \\ ^ ` { | } ] | % [ 0 - 9 a - f ] { 2 } ) | \{ [ + # . / ; ? & = , ! @ | ] ? (?: [ a - z 0 - 9 _ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: : [ 1 - 9 ] [ 0 - 9 ] { 0 , 3 } | \* ) ? (?: , (?: [ a - z 0 - 9 _ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: : [ 1 - 9 ] [ 0 - 9 ] { 0 , 3 } | \* ) ? ) * \} ) * $ / i,
55
+ "uri-template" :
56
+ / ^ (?: (?: [ ^ \x00 - \x20 " ' < > % \\ ^ ` { | } ] | % [ 0 - 9 a - f ] { 2 } ) | \{ [ + # . / ; ? & = , ! @ | ] ? (?: [ a - z 0 - 9 _ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: : [ 1 - 9 ] [ 0 - 9 ] { 0 , 3 } | \* ) ? (?: , (?: [ a - z 0 - 9 _ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: : [ 1 - 9 ] [ 0 - 9 ] { 0 , 3 } | \* ) ? ) * \} ) * $ / i,
55
57
// For the source: https://gist.github.com/dperini/729294
56
58
// For test cases: https://mathiasbynens.be/demo/url-regex
57
59
url : / ^ (?: h t t p s ? | f t p ) : \/ \/ (?: \S + (?: : \S * ) ? @ ) ? (?: (? ! (?: 1 0 | 1 2 7 ) (?: \. \d { 1 , 3 } ) { 3 } ) (? ! (?: 1 6 9 \. 2 5 4 | 1 9 2 \. 1 6 8 ) (?: \. \d { 1 , 3 } ) { 2 } ) (? ! 1 7 2 \. (?: 1 [ 6 - 9 ] | 2 \d | 3 [ 0 - 1 ] ) (?: \. \d { 1 , 3 } ) { 2 } ) (?: [ 1 - 9 ] \d ? | 1 \d \d | 2 [ 0 1 ] \d | 2 2 [ 0 - 3 ] ) (?: \. (?: 1 ? \d { 1 , 2 } | 2 [ 0 - 4 ] \d | 2 5 [ 0 - 5 ] ) ) { 2 } (?: \. (?: [ 1 - 9 ] \d ? | 1 \d \d | 2 [ 0 - 4 ] \d | 2 5 [ 0 - 4 ] ) ) | (?: (?: [ a - z 0 - 9 \u{00a1} - \u{ffff} ] + - ) * [ a - z 0 - 9 \u{00a1} - \u{ffff} ] + ) (?: \. (?: [ a - z 0 - 9 \u{00a1} - \u{ffff} ] + - ) * [ a - z 0 - 9 \u{00a1} - \u{ffff} ] + ) * (?: \. (?: [ a - z \u{00a1} - \u{ffff} ] { 2 , } ) ) ) (?: : \d { 2 , 5 } ) ? (?: \/ [ ^ \s ] * ) ? $ / iu,
58
- email : / ^ [ a - z 0 - 9 ! # $ % & ' * + / = ? ^ _ ` { | } ~ - ] + (?: \. [ a - z 0 - 9 ! # $ % & ' * + / = ? ^ _ ` { | } ~ - ] + ) * @ (?: [ a - z 0 - 9 ] (?: [ a - z 0 - 9 - ] * [ a - z 0 - 9 ] ) ? \. ) + [ a - z 0 - 9 ] (?: [ a - z 0 - 9 - ] * [ a - z 0 - 9 ] ) ? $ / i,
59
- hostname : / ^ (? = .{ 1 , 253 } \. ? $ ) [ a - z 0 - 9 ] (?: [ a - z 0 - 9 - ] { 0 , 61 } [ a - z 0 - 9 ] ) ? (?: \. [ a - z 0 - 9 ] (?: [ - 0 - 9 a - z ] { 0 , 61 } [ 0 - 9 a - z ] ) ? ) * \. ? $ / i,
60
+ email :
61
+ / ^ [ a - z 0 - 9 ! # $ % & ' * + / = ? ^ _ ` { | } ~ - ] + (?: \. [ a - z 0 - 9 ! # $ % & ' * + / = ? ^ _ ` { | } ~ - ] + ) * @ (?: [ a - z 0 - 9 ] (?: [ a - z 0 - 9 - ] * [ a - z 0 - 9 ] ) ? \. ) + [ a - z 0 - 9 ] (?: [ a - z 0 - 9 - ] * [ a - z 0 - 9 ] ) ? $ / i,
62
+ hostname :
63
+ / ^ (? = .{ 1 , 253 } \. ? $ ) [ a - z 0 - 9 ] (?: [ a - z 0 - 9 - ] { 0 , 61 } [ a - z 0 - 9 ] ) ? (?: \. [ a - z 0 - 9 ] (?: [ - 0 - 9 a - z ] { 0 , 61 } [ 0 - 9 a - z ] ) ? ) * \. ? $ / i,
60
64
// optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html
61
65
ipv4 : / ^ (?: (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) \. ) { 3 } (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) $ / ,
62
66
ipv6 : / ^ ( ( ( [ 0 - 9 a - f ] { 1 , 4 } : ) { 7 } ( [ 0 - 9 a - f ] { 1 , 4 } | : ) ) | ( ( [ 0 - 9 a - f ] { 1 , 4 } : ) { 6 } ( : [ 0 - 9 a - f ] { 1 , 4 } | ( ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ( \. ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ) { 3 } ) | : ) ) | ( ( [ 0 - 9 a - f ] { 1 , 4 } : ) { 5 } ( ( ( : [ 0 - 9 a - f ] { 1 , 4 } ) { 1 , 2 } ) | : ( ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ( \. ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ) { 3 } ) | : ) ) | ( ( [ 0 - 9 a - f ] { 1 , 4 } : ) { 4 } ( ( ( : [ 0 - 9 a - f ] { 1 , 4 } ) { 1 , 3 } ) | ( ( : [ 0 - 9 a - f ] { 1 , 4 } ) ? : ( ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ( \. ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ) { 3 } ) ) | : ) ) | ( ( [ 0 - 9 a - f ] { 1 , 4 } : ) { 3 } ( ( ( : [ 0 - 9 a - f ] { 1 , 4 } ) { 1 , 4 } ) | ( ( : [ 0 - 9 a - f ] { 1 , 4 } ) { 0 , 2 } : ( ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ( \. ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ) { 3 } ) ) | : ) ) | ( ( [ 0 - 9 a - f ] { 1 , 4 } : ) { 2 } ( ( ( : [ 0 - 9 a - f ] { 1 , 4 } ) { 1 , 5 } ) | ( ( : [ 0 - 9 a - f ] { 1 , 4 } ) { 0 , 3 } : ( ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ( \. ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ) { 3 } ) ) | : ) ) | ( ( [ 0 - 9 a - f ] { 1 , 4 } : ) { 1 } ( ( ( : [ 0 - 9 a - f ] { 1 , 4 } ) { 1 , 6 } ) | ( ( : [ 0 - 9 a - f ] { 1 , 4 } ) { 0 , 4 } : ( ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ( \. ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ) { 3 } ) ) | : ) ) | ( : ( ( ( : [ 0 - 9 a - f ] { 1 , 4 } ) { 1 , 7 } ) | ( ( : [ 0 - 9 a - f ] { 1 , 4 } ) { 0 , 5 } : ( ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ( \. ( 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | 1 \d \d | [ 1 - 9 ] ? \d ) ) { 3 } ) ) | : ) ) ) $ / i,
@@ -71,7 +75,7 @@ export const fullFormats: DefinedFormats = {
71
75
"relative-json-pointer" : / ^ (?: 0 | [ 1 - 9 ] [ 0 - 9 ] * ) (?: # | (?: \/ (?: [ ^ ~ / ] | ~ 0 | ~ 1 ) * ) * ) $ / ,
72
76
// the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types
73
77
// byte: https://github.com/miguelmota/is-base64
74
- byte : / ^ (?: [ A - Z a - z 0 - 9 + / ] { 4 } ) * (?: [ A - Z a - z 0 - 9 + / ] { 2 } = = | [ A - Z a - z 0 - 9 + / ] { 3 } = ) ? $ / gm ,
78
+ byte,
75
79
// signed 32 bit integer
76
80
int32 : { type : "number" , validate : validateInt32 } ,
77
81
// signed 64 bit integer
@@ -103,7 +107,8 @@ export const fastFormats: DefinedFormats = {
103
107
// email (sources from jsen validator):
104
108
// http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363
105
109
// http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')
106
- email : / ^ [ a - z 0 - 9 . ! # $ % & ' * + / = ? ^ _ ` { | } ~ - ] + @ [ a - z 0 - 9 ] (?: [ a - z 0 - 9 - ] { 0 , 61 } [ a - z 0 - 9 ] ) ? (?: \. [ a - z 0 - 9 ] (?: [ a - z 0 - 9 - ] { 0 , 61 } [ a - z 0 - 9 ] ) ? ) * $ / i,
110
+ email :
111
+ / ^ [ a - z 0 - 9 . ! # $ % & ' * + / = ? ^ _ ` { | } ~ - ] + @ [ a - z 0 - 9 ] (?: [ a - z 0 - 9 - ] { 0 , 61 } [ a - z 0 - 9 ] ) ? (?: \. [ a - z 0 - 9 ] (?: [ a - z 0 - 9 - ] { 0 , 61 } [ a - z 0 - 9 ] ) ? ) * $ / i,
107
112
}
108
113
109
114
export const strictFormats : Partial < DefinedFormats > = {
@@ -207,13 +212,21 @@ function compareDateTime(dt1: string, dt2: string): number | undefined {
207
212
}
208
213
209
214
const NOT_URI_FRAGMENT = / \/ | : /
210
- const URI = / ^ (?: [ a - z ] [ a - z 0 - 9 + \- . ] * : ) (?: \/ ? \/ (?: (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : ] | % [ 0 - 9 a - f ] { 2 } ) * @ ) ? (?: \[ (?: (?: (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 6 } | : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 5 } | (?: [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 4 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 1 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 3 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 2 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 2 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 3 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : [ 0 - 9 a - f ] { 1 , 4 } : | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 4 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : ) (?: [ 0 - 9 a - f ] { 1 , 4 } : [ 0 - 9 a - f ] { 1 , 4 } | (?: (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) \. ) { 3 } (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) ) | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 5 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : [ 0 - 9 a - f ] { 1 , 4 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 6 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : ) | [ V v ] [ 0 - 9 a - f ] + \. [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : ] + ) \] | (?: (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) \. ) { 3 } (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) | (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = ] | % [ 0 - 9 a - f ] { 2 } ) * ) (?: : \d * ) ? (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * | \/ (?: (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * ) ? | (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * ) (?: \? (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ / ? ] | % [ 0 - 9 a - f ] { 2 } ) * ) ? (?: # (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ / ? ] | % [ 0 - 9 a - f ] { 2 } ) * ) ? $ / i
215
+ const URI =
216
+ / ^ (?: [ a - z ] [ a - z 0 - 9 + \- . ] * : ) (?: \/ ? \/ (?: (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : ] | % [ 0 - 9 a - f ] { 2 } ) * @ ) ? (?: \[ (?: (?: (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 6 } | : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 5 } | (?: [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 4 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 1 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 3 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 2 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 2 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 3 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : [ 0 - 9 a - f ] { 1 , 4 } : | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 4 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : ) (?: [ 0 - 9 a - f ] { 1 , 4 } : [ 0 - 9 a - f ] { 1 , 4 } | (?: (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) \. ) { 3 } (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) ) | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 5 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : [ 0 - 9 a - f ] { 1 , 4 } | (?: (?: [ 0 - 9 a - f ] { 1 , 4 } : ) { 0 , 6 } [ 0 - 9 a - f ] { 1 , 4 } ) ? : : ) | [ V v ] [ 0 - 9 a - f ] + \. [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : ] + ) \] | (?: (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) \. ) { 3 } (?: 2 5 [ 0 - 5 ] | 2 [ 0 - 4 ] \d | [ 0 1 ] ? \d \d ? ) | (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = ] | % [ 0 - 9 a - f ] { 2 } ) * ) (?: : \d * ) ? (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * | \/ (?: (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * ) ? | (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) + (?: \/ (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ ] | % [ 0 - 9 a - f ] { 2 } ) * ) * ) (?: \? (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ / ? ] | % [ 0 - 9 a - f ] { 2 } ) * ) ? (?: # (?: [ a - z 0 - 9 \- . _ ~ ! $ & ' ( ) * + , ; = : @ / ? ] | % [ 0 - 9 a - f ] { 2 } ) * ) ? $ / i
211
217
212
218
function uri ( str : string ) : boolean {
213
219
// http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "."
214
220
return NOT_URI_FRAGMENT . test ( str ) && URI . test ( str )
215
221
}
216
222
223
+ const BYTE = / ^ (?: [ A - Z a - z 0 - 9 + / ] { 4 } ) * (?: [ A - Z a - z 0 - 9 + / ] { 2 } = = | [ A - Z a - z 0 - 9 + / ] { 3 } = ) ? $ / gm
224
+
225
+ function byte ( str : string ) : boolean {
226
+ BYTE . lastIndex = 0
227
+ return BYTE . test ( str )
228
+ }
229
+
217
230
const MIN_INT32 = - ( 2 ** 31 )
218
231
const MAX_INT32 = 2 ** 31 - 1
219
232
0 commit comments