@@ -49,14 +49,18 @@ export const fullFormats: DefinedFormats = {
4949 // duration: https://tools.ietf.org/html/rfc3339#appendix-A
5050 duration : / ^ P (? ! $ ) ( ( \d + Y ) ? ( \d + M ) ? ( \d + D ) ? ( T (? = \d ) ( \d + H ) ? ( \d + M ) ? ( \d + S ) ? ) ? | ( \d + W ) ? ) $ / ,
5151 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,
5354 // 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,
5557 // For the source: https://gist.github.com/dperini/729294
5658 // For test cases: https://mathiasbynens.be/demo/url-regex
5759 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,
6064 // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html
6165 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 ? ) $ / ,
6266 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 = {
103107 // email (sources from jsen validator):
104108 // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363
105109 // 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,
107112}
108113
109114export const formatNames = Object . keys ( fullFormats ) as FormatName [ ]
@@ -184,7 +189,8 @@ function compareDateTime(dt1: string, dt2: string): number | undefined {
184189}
185190
186191const 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
188194
189195function uri ( str : string ) : boolean {
190196 // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "."
0 commit comments