正则表达式url没有接受http | https | ftp和端口具有最大值

时间:2015-12-29 03:23:57

标签: regex

  1. 我的网址不接受http | http | FTP。
  2. Url将接受www。部分
  3. 接受任意数量子域名的网址。
  4. .com part as optional
  5. Url将接受端口号最大值0-65535。
  6. 我的正则表达式是,

    /^(?!(ftp|https?):\/\/)([a-zA-Z0-9]+\.)*[a-zA-Z0-9][a-zA-Z0-9-]+(\.[a-z]{2,6})?(:\d{1,5})?$/gm
    

    这个正则表达式验证是这样的,

    1. www.example.com - true
    2. http://example.com - false
    3. www.example.etc.com - true
    4. www.example.com:62444 - true
    5. https://example.com - false
    6. localhost:64343 - true
    7. 我在端口部分收到错误。

      它将接受任何5位数字。我需要将此限制为0-65535。 因为当值超过65535时,它显示Uri格式异常。

      请提出任何建议!

1 个答案:

答案 0 :(得分:1)

我认为以下内容将为您提供所需内容:

/^(?!(ftp|https?):\/\/)([a-zA-Z0-9]+\.)*[a-zA-Z0-9][a-zA-Z0-9-]+(\.[a-z]{2,6})?(:\d{1,4}|:[0-6][0-5][0-5][0-3][0-5])?$/gm

我唯一改变的是端口分析,从(:\d{1,5})?(因为这会得到任何 5位数字)到(:\d{1,4}|:[0-6][0-5][0-5][0-3][0-5])?(因为这会而是获得任何 4 - 数字,然后只有 5 - 数字,如果它们的数字在所需范围内)。

Click here for RegEx101 example