分享一个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-z\u4e00-\u9fa5]+$/;
return re.test(str);
}
/**
* 检查是否为英文汉字 下划线 和数字
*
* @param str
* @return boolean true:是,false:不是
*/
this.isEngChinesecharIntegerUnderline = function(str)
{
var re = /^[0-9A-Za-z\u4e00-\u9fa5_]+$/;
return re.test(str);
}
/**
* 检查是否为数字和汉字
*
* @param str
* @return boolean true:是,false:不是
*/
this.isIntegerChinesechar= function(str)
{
var re = /^[0-9\u4e00-\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}-)?(0\d{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-9\u4E00-\u9FA5][A-Za-z0-9\u4E00-\u9FA5\-]{0,19}([\.][A-Za-z0-9\u4E00-\u9FA5][A-Za-z0-9\u4E00-\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);
}
}