From 599e30ee6de2068fa3393bb5b7859efdbe9f34a8 Mon Sep 17 00:00:00 2001 From: Michael Schmidt Date: Tue, 5 Oct 2021 21:27:25 +0200 Subject: [PATCH] URI: Fixed IPv4 regex (#3128) --- components/prism-uri.js | 2 +- components/prism-uri.min.js | 2 +- tests/languages/uri/authority_feature.test | 25 ++++++++++++++++++++-- tests/languages/uri/full.test | 6 ++++-- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/components/prism-uri.js b/components/prism-uri.js index cdbf8dba3b..5831c7dd3b 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 aecc7c8ff0..c6479c0593 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 48679b14d8..0d37c29fee 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 277c039cc1..c4877b2aa3 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 +]