从正则表达式模式中删除ips,js

时间:2019-02-13 09:19:33

标签: javascript regex

您好,我有一种模式可以验证url,它工作正常,但我想从ip编号中删除所有验证:

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*)?$/

我尝试删除类似这样的零件:

/^(?:(?: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*)?$/

但是我不确定那是否很好

1 个答案:

答案 0 :(得分:2)

您可以简单地使用IP regex模式(?!(?: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]))删除所有IP regex匹配部分((?: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*)?$/

请参见regex demo

详细信息

  • ^-字符串的开头
    • (?:https?:\/\/)?-可选的字符串匹配
    • https?-httphttps
    • :\/\/-一个://子字符串
    • (?:-容器组的开始:
    • (?: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模式
    • |-或
      • (?:[a-z\u00a1-\uffff0-9]-*)*-在¡(索引161)和``(索引65535)之间,字母,数字或字符的0+次重复,后跟0+连字符
      • [a-z\u00a1-\uffff0-9]+-在¡(索引161)到``(索引65535)之间的1个字母,数字或字符
      • (?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*-点的零次或多次重复以及上面的两个子模式
      • (?:\.[a-z\u00a1-\uffff]{2,})-点号后接¡(索引161)和``(索引65535)之间的2个或更多字母,数字或字符重复
    • )-容器组的结尾
    • (?::\d{2,5})?-以:开头,然后是2到5位数字的可选子字符串
    • (?:\/\S*)?-可选的子字符串,以/开头,然后是0+个非空格字符
    • $-字符串的结尾。