URL端口的正则表达式

时间:2014-04-08 09:50:29

标签: javascript regex validation

我使用以下正则表达式来验证使用JavaScript的URL

/http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/

现在,上面验证了http://example.com

形式的网址

我希望它也验证端口号。例如,应验证http://example.com:8080http://example.com:80

如何修改相同的正则表达式以支持端口号验证(应该是必须的)?

2 个答案:

答案 0 :(得分:2)

首先,您当前的正则表达式与相当大比例的有效网址不匹配:

  • 与HTTPS地址不匹配
  • 它与短域名(例如http://xe.com/
  • 不匹配
  • 它与任何长度不超过3个字符的TLD都不匹配(所有国家/地区代码均为2个字符且许多其他TLD更长 - 尤其是最近/即将开放的新TLD)

这些限制中的一个或全部可能是故意的,但如果不提及它将是我的疏忽。

其次,您可以传递[A-Za-z...]修饰符来创建不区分大小写的正则表达式,而不是使用/.../i

考虑到这些因素,可以进行以下更改:

/^(https?):\/\/([A-Z\d\.-]{2,})\.([A-Z]{2,})(:\d{2,4})?/i

编辑:已更新为2到4位数的端口号。

答案 1 :(得分:-1)

使用它:

^http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}(?:\:\d+)$

演示:

http://regex101.com/r/lW5aL3

只有具有端口号的网址才会被验证,我在结尾之前添加了(?:\:\d+),以便可以验证冒号和一个或多个数字。您可以使用量词{}显式地将冒号后的数字位置放在这样的位置:

(?:\:\d{4})只允许四位数。结肠后

<强>更新

操作要求对数字2-4

进行此正则表达式传递

只需将quatifier更改为

(?:\:\d{2,4})