URI: Fixed IPv4 regex (#3128)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
diff --git a/components/prism-uri.js b/components/prism-uri.js
index cdbf8db..5831c7d 100644
--- a/components/prism-uri.js
+++ b/components/prism-uri.js
@@ -80,7 +80,7 @@ Prism.languages.uri = {
'ipv6-address': /^[\s\S]+/
}
},
- 'ipv4-address': /^(?:(?:[03-9]\d?|[12]\d{0,2})\.){3}(?:[03-9]\d?|[12]{0,2})$/
+ 'ipv4-address': /^(?:(?:[03-9]\d?|[12]\d{0,2})\.){3}(?:[03-9]\d?|[12]\d{0,2})$/
}
}
}
diff --git a/components/prism-uri.min.js b/components/prism-uri.min.js
index aecc7c8..c6479c0 100644
--- a/components/prism-uri.min.js
+++ b/components/prism-uri.min.js
@@ -1 +1 @@
-Prism.languages.uri={scheme:{pattern:/^[a-z][a-z0-9+.-]*:/im,greedy:!0,inside:{"scheme-delimiter":/:$/}},fragment:{pattern:/#[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"fragment-delimiter":/^#/}},query:{pattern:/\?[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"query-delimiter":{pattern:/^\?/,greedy:!0},"pair-delimiter":/[&;]/,pair:{pattern:/^[^=][\s\S]*/,inside:{key:/^[^=]+/,value:{pattern:/(^=)[\s\S]+/,lookbehind:!0}}}}},authority:{pattern:RegExp("^//(?:[\\w\\-.~!$&'()*+,;=%:]*@)?(?:\\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\\.[\\w\\-.~!$&'()*+,;=]+)\\]|[\\w\\-.~!$&'()*+,;=%]*)(?::\\d*)?","m"),inside:{"authority-delimiter":/^\/\//,"user-info-segment":{pattern:/^[\w\-.~!$&'()*+,;=%:]*@/,inside:{"user-info-delimiter":/@$/,"user-info":/^[\w\-.~!$&'()*+,;=%:]+/}},"port-segment":{pattern:/:\d*$/,inside:{"port-delimiter":/^:/,port:/^\d+/}},host:{pattern:/[\s\S]+/,inside:{"ip-literal":{pattern:/^\[[\s\S]+\]$/,inside:{"ip-literal-delimiter":/^\[|\]$/,"ipv-future":/^v[\s\S]+/,"ipv6-address":/^[\s\S]+/}},"ipv4-address":/^(?:(?:[03-9]\d?|[12]\d{0,2})\.){3}(?:[03-9]\d?|[12]{0,2})$/}}}},path:{pattern:/^[\w\-.~!$&'()*+,;=%:@/]+/m,inside:{"path-separator":/\//}}},Prism.languages.url=Prism.languages.uri;
\ No newline at end of file
+Prism.languages.uri={scheme:{pattern:/^[a-z][a-z0-9+.-]*:/im,greedy:!0,inside:{"scheme-delimiter":/:$/}},fragment:{pattern:/#[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"fragment-delimiter":/^#/}},query:{pattern:/\?[\w\-.~!$&'()*+,;=%:@/?]*/,inside:{"query-delimiter":{pattern:/^\?/,greedy:!0},"pair-delimiter":/[&;]/,pair:{pattern:/^[^=][\s\S]*/,inside:{key:/^[^=]+/,value:{pattern:/(^=)[\s\S]+/,lookbehind:!0}}}}},authority:{pattern:RegExp("^//(?:[\\w\\-.~!$&'()*+,;=%:]*@)?(?:\\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\\.[\\w\\-.~!$&'()*+,;=]+)\\]|[\\w\\-.~!$&'()*+,;=%]*)(?::\\d*)?","m"),inside:{"authority-delimiter":/^\/\//,"user-info-segment":{pattern:/^[\w\-.~!$&'()*+,;=%:]*@/,inside:{"user-info-delimiter":/@$/,"user-info":/^[\w\-.~!$&'()*+,;=%:]+/}},"port-segment":{pattern:/:\d*$/,inside:{"port-delimiter":/^:/,port:/^\d+/}},host:{pattern:/[\s\S]+/,inside:{"ip-literal":{pattern:/^\[[\s\S]+\]$/,inside:{"ip-literal-delimiter":/^\[|\]$/,"ipv-future":/^v[\s\S]+/,"ipv6-address":/^[\s\S]+/}},"ipv4-address":/^(?:(?:[03-9]\d?|[12]\d{0,2})\.){3}(?:[03-9]\d?|[12]\d{0,2})$/}}}},path:{pattern:/^[\w\-.~!$&'()*+,;=%:@/]+/m,inside:{"path-separator":/\//}}},Prism.languages.url=Prism.languages.uri;
\ No newline at end of file
diff --git a/tests/languages/uri/authority_feature.test b/tests/languages/uri/authority_feature.test
index 48679b1..0d37c29 100644
--- a/tests/languages/uri/authority_feature.test
+++ b/tests/languages/uri/authority_feature.test
@@ -1,6 +1,7 @@
https://john.doe@www.example.com:123/forum/questions
ftp://ftp.is.co.za/rfc/rfc1808.txt
ldap://[2001:db8::7]/
+https://[v1.foo]/
//192.0.2.16:80/
//example.com/path/resource.txt
@@ -63,9 +64,29 @@ ldap://[2001:db8::7]/
["path-separator", "/"]
]],
+ ["scheme", [
+ "https",
+ ["scheme-delimiter", ":"]
+ ]],
["authority", [
["authority-delimiter", "//"],
- ["host", ["192.0.2.16"]],
+ ["host", [
+ ["ip-literal", [
+ ["ip-literal-delimiter", "["],
+ ["ipv-future", "v1.foo"],
+ ["ip-literal-delimiter", "]"]
+ ]]
+ ]]
+ ]],
+ ["path", [
+ ["path-separator", "/"]
+ ]],
+
+ ["authority", [
+ ["authority-delimiter", "//"],
+ ["host", [
+ ["ipv4-address", "192.0.2.16"]
+ ]],
["port-segment", [
["port-delimiter", ":"],
["port", "80"]
@@ -85,4 +106,4 @@ ldap://[2001:db8::7]/
["path-separator", "/"],
"resource.txt"
]]
-]
\ No newline at end of file
+]
diff --git a/tests/languages/uri/full.test b/tests/languages/uri/full.test
index 277c039..c4877b2 100644
--- a/tests/languages/uri/full.test
+++ b/tests/languages/uri/full.test
@@ -93,7 +93,9 @@ https://example.com/path/resource.txt#fragment
]],
["authority", [
["authority-delimiter", "//"],
- ["host", ["192.0.2.16"]],
+ ["host", [
+ ["ipv4-address", "192.0.2.16"]
+ ]],
["port-segment", [
["port-delimiter", ":"],
["port", "80"]
@@ -121,4 +123,4 @@ https://example.com/path/resource.txt#fragment
["fragment-delimiter", "#"],
"fragment"
]]
-]
\ No newline at end of file
+]