先说说网上流传的版本: |
[a-zA-z]+: //[^\s]* |
粗糙,没有对URL中各个块进行分组 |
修正如下(又一段网上流传的版本): |
var _url = "^((https|http|ftp|rtsp|mms)?://)?" // |
+ "(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" // ftp的user@ |
+ "(([0-9]{1,3}.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184 |
+ "|" // 允许IP和DOMAIN(域名) |
+ "([0-9a-z_!~*'()-]+.)*" // 域名- www. |
+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." // 二级域名 |
+ "[a-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-z_!~*'().;?:@&=+$,%#-]+)+/?)$" ; |
var rurl = new RegExp( _url, 'i' ); |
|
测试: |
rurl.exec( 'baidu.com' ) // ["baidu.com", undefined, undefined, undefined, undefined, "baidu.com", undefined, "baid", undefined, undefined, "", "", undefined] |
rurl.exec( 'http://baidu.com' ) // |
rurl.exec( 'http://www.baidu.com' ) // [ "http://baidu.com" , "http://" , "http" , undefined, undefined, "baidu.com" , undefined, "baid" , undefined, undefined, "" , "" , undefined] |
rurl.test( 'baidu' ) // true |