DDave
DDave

Reputation: 1543

remove ips from regex pattern, js

Hello I have a pattern to validate url, it's working well, but i'd like to delete all validation from ip numbers:

const pattern= /^(?:(?:https?):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/

I've tried delete someting parts like this:

/^(?:(?:https?):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:\.\d{1,3}){2}){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/

but i'm not sure if that is well

Upvotes: 2

Views: 81

Answers (1)

Wiktor Stribiżew
Wiktor Stribiżew

Reputation: 626794

You may simply remove all the IP regex matching part ((?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))) with an IP regex pattern, (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}:

/^(?:https?:\/\/)?(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}|(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/

See the regex demo

Details

  • ^ - start of string
    • (?:https?:\/\/)? - an optional string matching
    • https? - http or https
    • :\/\/ - a :// substring
    • (?: - start of a container group:
    • (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3} - IPv4 pattern
    • | - or
      • (?:[a-z\u00a1-\uffff0-9]-*)* - 0+ repetitions of a letter, digit or a char between ¡ (index 161) and `` (index 65535) followed with 0+ hyphens
      • [a-z\u00a1-\uffff0-9]+ - 1+ letters, digits or chars between ¡ (index 161) and `` (index 65535)
      • (?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)* - zero or more repetitions of a dot followed with the two above subpatterns
      • (?:\.[a-z\u00a1-\uffff]{2,}) - a dot followed with 2 or more repetitions of letters, digits or chars between ¡ (index 161) and `` (index 65535)
    • ) - end of the container group
    • (?::\d{2,5})? - an optional substring starting with : and then 2 to 5 digits
    • (?:\/\S*)? - an optional substring starting with a / and then 0+ non-whitespace chars
    • $ - end of string.

Upvotes: 2

Related Questions