js正则数据验证归纳

分享一个js数据验证类,主要是正则的使用

/**
* js数据验证类
*/
var ValidateUtil = new function() 
{
    /**
    * 用正则表达式替换前后空格
    *
    * @param str
    * @return str
    */
    this.trim= function(str)       
    {      
        var t = str.replace(/(^s*)|(s*$)/g, "");     
        return t.replace(/(^ *)|( *$)/g, "");     
    }
   /**
    * 去掉字符串左边的空格
    *
    * @param str
    * @return str
    */
    this.ltrim= function(str)       
    {      
        return str.replace(/(^s*)/g, ""); 
    }   
   /**
    * 去掉字符串右边的空格
    *
    * @param str
    * @return str
    */
    this.rtrim= function(str)       
    {      
    return str.replace(/(s*$)/g, "");  
    }     
    /**
    * 检查字符串是否为空
    *
    * @param str
    * @return boolean true:是,false:不是
    */      
    this.strIsNull=function(str)
    {
       if(str==undefined || str==null || str=="")
       {
            return true;
       }
       return false;
    }
    /**
    * 检查是否为英文
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isEng = function(str)
     {
        var re = /^[A-Za-z]+$/;
        return re.test(str);
    }
    /**
    * 检查是否为数字
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isInteger = function(str)
     {
        var re = /^[-]?[0-9]+$/;
        return re.test(str);
    }
    /**
    * 检查是否为正整数
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isPositiveInteger = function(str)
     {
        var re = /^[0-9]+$/;
        return re.test(str);
    }    
    /**
    * 检查是否为负整数
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isNegativeInteger = function(str) 
    {
        var re = /^-[0-9]+$/;
        return re.test(str);
    }      
     /**
    * 检查是否为汉字
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isChineseChar = function(str) 
    {
        var re = /^[u4e00-u9fa5]+$/;
        return re.test(str);
    }
    /**
    * 检查是否为英文和数字
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isEngInteger = function(str)
     {
        var re = /^[0-9A-Za-z]+$/;
        return re.test(str);
    }
    /**
    * 检查是否为英文和汉字
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isEngChinesechar = function(str) 
    {
        var re = /^[A-Za-zu4e00-u9fa5]+$/;
        return re.test(str);
    }   
    
    /**
    * 检查是否为英文汉字 下划线 和数字
    *
    * @param str
    * @return boolean true:是,false:不是
    */        
    this.isEngChinesecharIntegerUnderline = function(str) 
    {
        var re = /^[0-9A-Za-zu4e00-u9fa5_]+$/;
        return re.test(str);
    }   
      
    /**
    * 检查是否为数字和汉字
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isIntegerChinesechar= function(str) 
    {
        var re = /^[0-9u4e00-u9fa5]+$/;
        return re.test(str);
    }      
    /**
    * 检查是否为数字和字母和下划线
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isEngIntegerUnderline = function(str) 
    {
        var re = /^[0-9A-Za-z_]+$/;
        return re.test(str);
    }      
    /**
    * 检查字符串长度是否是 n位
    *
    * @param str  字符串
    * @param limitsize 限制长度
    * @return boolean true:是,false:不是
    */
    this.strIsOverlength = function(str,limitsize) 
    {
        if(this.strIsNull(str))
        {
            return false;   
        }
        if(str.length==limitsize)
        {
            return true;   
        }
        return false;
    }      
    /**
    * 检查字符串长度至少n位的限制
    *
    * @param str  字符串
    * @param leastsize 限制长度
    * @return boolean true:是,false:不是
    */
    this.strLeastsize = function(str,leastsize) 
    {
        if(this.strIsNull(str))
        {
            return false;   
        }
        if(str.length<=leastsize)
        {
            return true;   
        }
        return false;
    }  
    /**
    * 检查字符串长度至少n位 最多 m位 的限制
    *
    * @param str  字符串
    * @param leastminsize 最少限制长度
    * @param leastmaxsize 最多限制长度
    * @return boolean true:是,false:不是
    */
    this.strLeastnmsize = function(str,leastminsize,leastmaxsize)
     {
        if(this.strIsNull(str))
        {
            return false;   
        }
        if(str.length>=leastminsize && str.length<=leastmaxsize)
        {
            return true;   
        }
        return false;
    } 
    /**
    * 检查是否为浮点数
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isAge = function(str)
     {
        var re = /^(?:[1-9][0-9]?|1[01][0-9]|120)$/;
        return re.test(str);
    }       
    /**
    * 检查是否为浮点数
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isDouble = function(str) 
    {
        var re = /^d+(.d+)?$/;
        return re.test(str);
    }    
    /**
    * 检查至少n位 最多 m位 的限制的浮点数
    *
    * @param str  字符串
    * @param leastminsize 最少限制长度
    * @param leastmaxsize 最多限制长度
    * @return boolean true:是,false:不是
    */
    this.isDoubleLeastnmsize = function(str,leastminsize,leastmaxsize) 
    {
        var re =  eval("/^(0|[1-9]\d*)(\.\d{"+leastminsize+","+leastmaxsize+"})+$/");
        return re.test(str);
    }     
    /**
    * 检查是否为正浮点数
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isPositiveDouble= function(str)
     {
        var re = /^[1-9]d*.d*|0.d*[1-9]d*$/;
        return re.test(str);
    }     
    /**
    * 检查是否为负浮点数
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isNegativeDouble  = function(str) 
    {
        var re = /^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$/;
        return re.test(str);
    }     
    /**
    * 检查两个字符串是否相等
    *
    * @param str  字符串
    * @param leastsize 限制长度
    * @return boolean true:是,false:不是
    */
    this.strEquals = function(str1,str2)
     {
        if(str1==str2)
        {
            return true;   
        }
        return false;
    }     
    /**
    * 检查是否为邮箱格式
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isEmail = function(str) 
    {
        var re = /^([a-zA-Z0-9]+[_|\_|.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|.]?)*[a-zA-Z0-9]+.[a-zA-Z]{2,3}$/;
        return re.test(str);
    }       
    /**
    * 检查是否为电话格式  包括手机和固定电话
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isTelephone = function(str) 
    {  
       if(this.isMobile(str) || this.isFixedPhone(str))
       {
            return true; 
       }
        return false;
    }      
    /**
    * 检查是否为手机格式
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isMobile = function(str)
     {
        var re = /^(1)d{10}$/;
        return re.test(str);
    }      
    /**
    * 检查是否为固定电话
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isFixedPhone = function(str)
     {
        var re =/^(d{2,4}[-_-—]?)?d{3,9}([-_-—]?d{3,9})?([-_-—]?d{1,7})?$/;
        var re1 = /^0?1[35]d{9}$/;
        return (re.test(str) || re1.test(str));
    }   
    /**
    * 检查是否为邮政编码
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isZipCode = function(str) 
    {
        var re = /^[0-9]{6}$/;
        return re.test(str);
    } 
    /**
    * 检查是否为传真号码
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isFax = function(str) 
    {
        var re = /^(([0+]d{2,3}-)?(0d{2,3})-)(d{7,8})(-(d{3,}))?$/;
        return re.test(str);
    } 
    /**
    * 检查是否为url
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isURL = function(str)
     {
       var strRegex = "^([A-Za-z]*://)"
      + "?(([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 re=new RegExp(strRegex);  
      return re.test(str);
    } 
    /**
    * 检查是否为中文url
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isChineseDomain = function(str) 
    {
        var re = /^[A-Za-z0-9u4E00-u9FA5][A-Za-z0-9u4E00-u9FA5-]{0,19}([.][A-Za-z0-9u4E00-u9FA5][A-Za-z0-9u4E00-u9FA5-]{0,19})*$/;
        return re.test(str);
    } 
    /**
    * 检查是否为ip地址
    * 包括 ipv4和ipv6
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isIPAddress = function(str)
     {
        if(this.isIPAddress4(str) || this.isIPAddress6(str))
        {
            return true;   
        }
        return false;
    }
    /**
    * 检查是否为ipv4
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isIPAddress4 = function(str) 
    {
        var ipreg = /^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]).([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$/;
        return ipreg.test(str)
    }
    /**
    * 检查是否为ipv6
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isIPAddress6 = function(str)
     {
        var re = /^([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}$/;
        return re.test(str);
    }
    /**
    * 检查是否为qq号
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isQQ = function(str)
     {
        var re = /^[1-9]d{4,8}$/;
        return re.test(str);
    }
    /**
    * 检查是否为身份证
    *
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isIDCard = function(str) 
    {
        var re =/^d{15}$|d{17}[dXx]$/;
        return re.test(str);
    }    
    /**
    * 检查有效长日期格式是否正确 ,只检查位数不做正确性测试
    *  YYYY-MM-DD HH:MM:SS  YYYY/MM/DD HH:MM:SS
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isDateTime = function(str)
     {
        var re =/^(d{1,4})(-|/)(d{1,2})2(d{1,2}) (d{1,2}):(d{1,2}):(d{1,2})$/;
        return re.test(str);
    }      
    /**
    * 检查有效短日期格式是否正确 ,只检查位数不做正确性测试
    *  YYYY-MM-DD YYYY/MM/DD
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isDate = function(str)
     {
        var re =/^(d{1,4})(-|/)(d{1,2})2(d{1,2})$/;
        return re.test(str);
    }     
    /**
    * 检查是否是闰年 传入年份或者年月日
    * YYYY   YYYY-MM-DD
    * @param str 
    * @return boolean true:是,false:不是
    */
    this.isLeapYear = function(str)
     {
        if(this.strLeastsize(str,4))
        {
            var year = str.substring(0,4);
            if((year%4==0&& year%100!=0)||year%400==0)
            {
                return true;   
            }       
        }        
        return false;
    }       
    /**
    * 文件扩展名名称是否是图片类型
    * @param str
    * @return boolean true:是,false:不是
    */
    this.isImageFiletype = function(str) 
    {
        var re =/.jpg$|.jpeg$|.gif$|.png$/i;
        return re.test(str);
    } 
}

  

原文地址:https://www.cnblogs.com/shiv/p/5091540.html