url的Regex不接受http|https|ftp和具有最大值的端口


  1. 我的url不接受http|http|ftp
  2. Url将接受www.part
  3. 接受任意数量子域的Url
  4. .com部分为可选
  5. Url将接受端口号最大值0-65535

我的正则表达式是

/^(?!(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-错误
  3. www.example.etc.com-true
  4. www.example.com:6244-true
  5. https://example.com-错误
  6. 本地主机:64343-true

我的端口部分出现错误。

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

有什么建议吗!

我认为以下内容将提供您想要的内容:

/^(?!(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位数)。

单击此处查看RegEx101示例

最新更新