@@ -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,
@@ -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 formatNames = Object . keys ( fullFormats ) as FormatName [ ]
@@ -184,7 +189,8 @@ function compareDateTime(dt1: string, dt2: string): number | undefined {
184
189
}
185
190
186
191
const NOT_URI_FRAGMENT = / \/ | : /
187
- 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
192
+ const URI =
193
+ / ^ (?: [ 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
188
194
189
195
function uri ( str : string ) : boolean {
190
196
// http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "."
0 commit comments