网址验证公共方法分享

 前端开发中经常需求用到对网址的验证,取参数等操作,

这里整理了一个公共方法分享出来:

 

这里使用了闭包来缓存正则和最近用到的1000个网址

 

 

  
  
  
  
  1. /** 
  2. *@param {string} strUrl 
  3. *@return {object} { 
  4. *   isWebsit:{bool}, 
  5. *   agreement:{string}||null, 
  6. *   ftpName:{string}||null, 
  7. *   hostName:{string}||null, 
  8. *   port:{string}||null, 
  9. *   filePath:{string}||null, 
  10. *   params:{key:value}||null, 
  11. *   hash:{string}||null 
  12. *   }; 
  13. */ 
  14. window.WebsiteCheck=function(){ 
  15. var reg = new RegExp("^(?:(https|http|ftp|rtsp|mms)?://)?(?:((?:[0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+)@)?((?:[0-9]{1,3}\.){3}[0-9]{1,3}|(?:[0-9a-z_!~*'()-]+[.])*(?:[0-9a-z][0-9a-z\-]{0,61})?[0-9a-z][.][a-z]{2,6})(?::([0-9]{1,4}))?((?:/?)|(?:/[^?#&]+)+/?)(?:/?[?]([0-9a-z_!~*'().;:@&=+$,%\-|]*))?(?:#([0-9a-z_!~*'().;:@?&=+$,%\-|\#]+))?$",'i'), 
  16. objResult={count:0,items:{}}; 
  17. return function(strUrl){ 
  18.     if(objResult.items[strUrl]){ 
  19.         return objResult.items[strUrl]; 
  20.     }else
  21.         if(objResult.count < 1000){ 
  22.             objResult.count++; 
  23.         }else
  24.             delete objResult; 
  25.             objResult={count:0,items:{}}; 
  26.         } 
  27.         var _arrResult = strUrl.match(reg); 
  28.         if(_arrResult && _arrResult.length > 0){ 
  29.             if(_arrResult[6]){ 
  30.                 var _arrParam = _arrResult[6].split('&'), _objParam = {}; 
  31.                 for(var i=0; i < _arrParam.length; i++){ 
  32.                     var _p = _arrParam[i].indexOf('='); 
  33.                     if(_p > 0){ 
  34.                         _objParam[_arrParam[i].substring(0,_p)] = _arrParam[i].substring(_p+1); 
  35.                     } 
  36.                 } 
  37.             } 
  38.             objResult.items[strUrl] = { 
  39.                 isWebsit:true
  40.                 agreement:_arrResult[1] || null
  41.                 ftpName:_arrResult[2] || null
  42.                 hostName:_arrResult[3] || null
  43.                 port:_arrResult[4] || null
  44.                 filePath:_arrResult[5] || null
  45.                 params: _objParam || null
  46.                 hash: _arrResult[7] || null 
  47.             }; 
  48.         }else
  49.             objResult.items[strUrl] = {isWebsit:false,agreement:null,ftpName:null,hostName:null,port:null,filePath:null,params:null,hash:null}; 
  50.         } 
  51.         return objResult.items[strUrl] || false
  52.     } 
  53. (); 

 

你可能感兴趣的:(职场,正则,网址,休闲)