网上看到了N个版本的js验证url的正则,而每个版本又都存在很大的问题(可以说是基础欠好用)
下面列一下看到过的几个所谓完美验证的版本
版本一
"^((https|http|ftp|rtsp|mms)?://)"
+ "?(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?" //ftp的user@
+ "(([0-9]{1,3}/.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
+ "|" // 答允IP和DOMAIN(域名)
+ "([0-9a-zA-Z_!~*'()-]+/.)*" // 域名-
+ "([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z]/." // 二级域名
+ "[a-zA-Z]{2,6})" // first level domain- .com or .museum
+ "(:[0-9]{1,4})?" // 端口- :80
+ "((/?)|" // a slash isn't required if there is no file name
+ "(/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+/?)$";
版本二
/(?:(?:http[s]?|ftp|mms):////)?(?:([^:@]+)(?::([^@]*))?@)?([^:@//]+)(?::(/d+))?(?:(//.*?)(?:/?(.*?))?(?:#(.*?))?)$/
版本一,连最根基的输入aaaa都能通过验证。。。无语
版本二,输入aaa/也能顺利通过验证。。。