昨天写了验证(C#和正则表达式),今天又写了个js版的验证。现在贴出来,为了方便自己查阅,同时也希望能给需要的人帮助和一些启发。由于今天才开始接触js,所以可能会有一些错漏,希望大家能批评指正。

var Validator = {
VerityLib: {
//验证字符串非空
IsNotEmpty: function (input) {
if (input != '') {
return true;
} else {
return false;
}
},
//验证数字(double类型) [可以包含负号和小数点]
IsNumber: function (input) {
var regex = /^-?\d+$|^(-?\d+)(\.\d+)?$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证整数
IsInteger: function (input) {
var regex = /^-?\d+$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证非负整数
IsIntegerNotNagtive: function (input) {
var regex = /^\d+$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证正整数
IsIntegerPositive: function (input) {
var regex = /^[0-9]*[1-9][0-9]*$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证小数
IsDecimal: function (input) {
var regex = /^([-+]?[1-9]\d*\.\d+|-?0\.\d*[1-9]\d*)$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证只包含英文字母
IsEnglishCharacter: function (input) {
var regex = /^[A-Za-z]+$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证只包含数字和英文字母
IsIntegerAndEnglishCharacter: function (input) {
var regex = /^[0-9A-Za-z]+$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证只包含汉字
IsChineseCharacter: function (input) {
var regex = /^[\u4e00-\u9fa5]+$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证数字长度范围(数字前端的0计长度)[若要验证固定长度,可传入相同的两个长度数值]
IsIntegerLength: function (input, lengthBegin, lengthEnd) {
var pattern = '^\\d{' + lengthBegin + ',' + lengthEnd + '}$';
var regex = new RegExp(pattern);
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证字符串包含内容
IsStringInclude: function (input, withEnglishCharacter, withNumber, withChineseCharacter) {
if (!Boolean(withEnglishCharacter) && !Boolean(withNumber) && !Boolean(withChineseCharacter)) {
return false; //如果英文字母、数字和汉字都没有,则返回false
}
var pattern = '^[';
if (Boolean(withEnglishCharacter)) {
pattern += 'a-zA-Z';
}
if (Boolean(withNumber)) {
pattern += '0-9';
}
if (Boolean(withChineseCharacter)) {
pattern += '\\u4E00-\\u9FA5';
}
pattern += ']+$';
var regex = new RegExp(pattern);
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证字符串长度范围 [若要验证固定长度,可传入相同的两个长度数值]
IsStringLength: function (input, LengthBegin, LengthEnd) {
var pattern = '^.{' + lengthBegin + ',' + lengthEnd + '}$';
var regex = new RegExp(pattern);
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证字符串长度范围(字符串内只包含数字和/或英文字母)[若要验证固定长度,可传入相同的两个长度数值]
IsStringLengthOnlyNumberAndEnglishCharacter: function (input, LengthBegin, LengthEnd) {
var pattern = '^[0-9a-zA-z]{' + lengthBegin + ',' + lengthEnd + '}$';
var regex = new RegExp(pattern);
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证字符串长度范围 [若要验证固定长度,可传入相同的两个长度数值]
IsStringLengthByInclude: function (input, withEnglishCharacter, withNumber, withChineseCharacter, lengthBegin, lengthEnd) {
if (!withEnglishCharacter && !withNumber && !withChineseCharacter) {
return false; //如果英文字母、数字和汉字都没有,则返回false
}
var pattern = '^[';
if (Boolean(withEnglishCharacter))
pattern += 'a-zA-Z';
if (Boolean(withNumber))
pattern += '0-9';
if (Boolean(withChineseCharacter))
pattern += '\\u4E00-\\u9FA5';
pattern += ']{' + lengthBegin + ',' + lengthEnd + '}$';
var regex = new RegExp(pattern);
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证字符串字节数长度范围 [若要验证固定长度,可传入相同的两个长度数值;每个汉字为两个字节长度]
IsStringByteLength: function (input, lengthBegin, lengthEnd) {
var regex = /[^\x00-\xff]/g;
var byteLength = input.replace(regex, 'ok').length;
if (byteLength >= lengthBegin && byteLength <= lengthEnd) {
return true;
} else {
return false;
}
},
//验证日期 [只能验证日期,不能验证时间]
IsDateTime: function (input) {
if (Date.parse(input)) {
return true;
} else {
return false;
}
},
//验证固定电话号码 [3位或4位区号;区号可以用小括号括起来;区号可以省略;区号与本地号间可以用减号或空格隔开;可以有3位数的分机号,分机号前要加减号]
IsTelePhoneNumber: function (input) {
var regex = /^(((\(0\d{2}\)|0\d{2})[- ]?)?\d{8}|((\(0\d{3}\)|0\d{3})[- ]?)?\d{7})(-\d{3})?$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证手机号码 [可匹配"(+86)013325656352",括号可以省略,+号可以省略,(+86)可以省略,11位手机号前的0可以省略;11位手机号第二位数可以是3、4、5、8中的任意一个]
IsMobilePhoneNumber: function (input) {
var regex = /^(\((\+)?86\)|((\+)?86)?)0?1[3458]\d{9}$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证电话号码(可以是固定电话号码或手机号码)
IsPhoneNumber: function (input) {
var regex = /^(\((\+)?86\)|((\+)?86)?)0?1[3458]\d{9}$|^(((\(0\d{2}\)|0\d{2})[- ]?)?\d{8}|((\(0\d{3}\)|0\d{3})[- ]?)?\d{7})(-\d{3})?$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证邮政编码
IsZipCode: function (input) {
var regex = /^\d{6}$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证电子邮箱 [@字符前可以包含字母、数字、下划线和点号;@字符后可以包含字母、数字、下划线和点号;@字符后至少包含一个点号且点号不能是最后一个字符;最后一个点号后只能是字母或数字]
IsEmail: function (input) {
////邮箱名以数字或字母开头;邮箱名可由字母、数字、点号、减号、下划线组成;邮箱名(@前的字符)长度为3~18个字符;邮箱名不能以点号、减号或下划线结尾;不能出现连续两个或两个以上的点号、减号。
//var regex = /^[a-zA-Z0-9]((?<!(\.\.|--))[a-zA-Z0-9\._-]){1,16}[a-zA-Z0-9]@([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?|((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/;
var regex = /^([\w-\.]+)@([\w-\.]+)(\.[a-zA-Z0-9]+)$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证网址(可以匹配IPv4地址但没对IPv4地址进行格式验证;IPv6暂时没做匹配)[允许省略"://";可以添加端口号;允许层级;允许传参;域名中至少一个点号且此点号前要有内容]
IsURL: function (input) {
////每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,单个域长度不超过63,完整的域名全长不超过256个字符。在DNS系统中,全名是以一个点“.”来结束的,例如“www.nit.edu.cn.”。没有最后的那个点则表示一个相对地址。
////没有例如"http://"的前缀,没有传参的匹配
//var regex = /^([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?$/; //var regex = /^(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://)|(www\.))+(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(/[a-zA-Z0-9\&%_\./-~-]*)?$/;
var regex = /^([a-zA-Z]+:\/\/)?([\w-\.]+)(\.[a-zA-Z0-9]+)(:\d{0,5})?\/?([\w-\/]*)\.?([a-zA-Z]*)\??(([\w-]*=[\w%]*&?)*)$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证IPv4地址 [第一位和最后一位数字不能是0或255;允许用0补位]
IsIPv4: function (input) {
var regex = /^(25[0-4]|2[0-4]\d]|[01]?\d{2}|[1-9])\.(25[0-5]|2[0-4]\d]|[01]?\d?\d)\.(25[0-5]|2[0-4]\d]|[01]?\d?\d)\.(25[0-4]|2[0-4]\d]|[01]?\d{2}|[1-9])$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证IPv6地址 [可用于匹配任何一个合法的IPv6地址]
IsIPv6: function (input) {
var regex = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证身份证号 [可验证一代或二代身份证]
IsIDCard: function (input) {
input = input.toUpperCase();
//验证身份证号码格式 [一代身份证号码为15位的数字;二代身份证号码为18位的数字或17位的数字加字母X]
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/i.test(input))) {
return false;
}
//验证省份
var arrCity = { 11: '北京', 12: '天津', 13: '河北', 14: '山西', 15: '内蒙古', 21: '辽宁', 22: '吉林', 23: '黑龙江 ', 31: '上海', 32: '江苏', 33: '浙江', 34: '安徽', 35: '福建', 36: '江西', 37: '山东', 41: '河南', 42: '湖北', 43: '湖南', 44: '广东', 45: '广西', 46: '海南', 50: '重庆', 51: '四川', 52: '贵州', 53: '云南', 54: '西藏', 61: '陕西', 62: '甘肃', 63: '青海', 64: '宁夏', 65: '新疆', 71: '台湾', 81: '香港', 82: '澳门', 91: '国外' };
if (arrCity[parseInt(input.substr(0, 2))] == null) {
return false;
}
//验证出生日期
var regBirth, birthSplit, birth;
var len = input.length;
if (len == 15) {
regBirth = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
birthSplit = input.match(regBirth);
birth = new Date('19' + birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]);
if (!(birth.getYear() == Number(birthSplit[2]) && (birth.getMonth() + 1) == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) {
return false;
}
return true;
}
else if (len == 18) {
regBirth = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/i);
birthSplit = input.match(regBirth);
birth = new Date(birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]);
if (!(birth.getFullYear() == Number(birthSplit[2]) && (birth.getMonth() + 1) == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) {
return false;
}
//验证校验码
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
for (i = 0; i < 17; i++) {
nTemp += input.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != input.substr(17, 1)) {
return false;
}
return true;
}
return false;
},
//验证经度
IsLongitude: function (input) {
var regex = /^[-\+]?((1[0-7]\d{1}|0?\d{1,2})\.\d{1,5}|180\.0{1,5})$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
},
//验证纬度
IsLatitude: function (input) {
var regex = /^[-\+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/;
if (input.match(regex)) {
return true;
} else {
return false;
}
}
}
}

验证(Javascript和正则表达式)的更多相关文章

  1. 如何使用JavaScript和正则表达式进行数据验证

    利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作,下面与大家分享下如何使用JavaScript和正则表达式进行数据验证,感兴趣的朋友可以参考下哈 数据验证 ...

  2. JavaScript 【正则表达式验证数字代码】

    可以看到 Ajax 请求多了个 x-requested-with ,可以利用它,request.getHeader("x-requested-with"); 为 null,则为传统 ...

  3. 正则表达式之邮箱验证javascript代码

    fuchangxi的正则: 复制代码 代码如下: /^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g 开始必须是一个或者多个单词 ...

  4. javascript类型系统——正则表达式RegExp类型

    × 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String ...

  5. javascript中正则表达式的基础语法

    × 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...

  6. 深入浅出的javascript的正则表达式学习教程

    深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...

  7. JavaScript常用正则表达式与应用(一)

    JavaScript的String类和RegExp对象类都定义了相关方法使用正则表达式进行模式匹配,本文将以连载方式介绍JavaScript常用正则表达式与相关应用,欢迎交流 本节是连载一,首先介绍J ...

  8. JavaScript数据类型 正则表达式RegExp类型

    前言 上一篇文章已经介绍了正则表达式的基础语法.javascript的RegExp类表示正则表达式,String和RegExp都定义了方法,使用正则表达式可以进行强大的模式匹配和文本检索与替换.本文将 ...

  9. js 验证数字的正则表达式集

    <script type="text/javascript">     function validate(){       var reg = new RegExp( ...

  10. 深入浅出Javascript的正则表达式

    深入浅出的javascript的正则表达式学习教程 阅读目录 了解正则表达式的方法 了解正则中的普通字符 了解正则中的方括号[]的含义 理解javascript中的元字符 RegExp特殊字符中的需要 ...

随机推荐

  1. sell-- 英文网站产品显示404?

    1. 简介: 通过在主页(header.jsp)查询B22212,在localhost本地, cn和us查询的结果search.jsp中显示都是没有找到! 但是在外网(www),cn能够查询到,并展示 ...

  2. 在美国看中国HTML5市场的发展

    近日,APICloud 创始人兼CEO刘鑫在美国旧金山和美国的HTML5开发者进行了一次近距离的接触,感受中美HTML5开发者的热度差别和不同市场阶段的中美表现巨大差异. 中国和美国的HTML5市场差 ...

  3. sqlite数据库 adb 从配置到查询表中数据全过程-----献给初学的自己

    1.   E:\Android\android-sdk-windows\platform-tools[将adb.exe文件的路径放到path中,设置环境变量] 2.  adb -s emulator ...

  4. error MIDL2311 : statements outside library block are illegal in mktyplib compatability mode

    解决办法: 1. Do not use the /mktyplib203 switch unless you have to deal with legacy code dating back to ...

  5. curl命令常见用法汇总 good

    curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面. curl是一个强大的命令行工具,它可以通过网络将信息传递给服务器或者从服 ...

  6. AWR快照管理

    创建快照: SQL> exec dbms_workload_repository.create_snapshot(); 删除快照: SQL> exec dbms_workload_repo ...

  7. mysql explain输出中type的取值说明

    原文: http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html 这列很重要,显示了连接使用了哪种连接类别,有无使用索引. 从最好 ...

  8. c# 访问ftp

    ftp从服务器上获取通信设备吐出的mr数据,该方案估计在通信行业上一个很普遍的一种方案,很奇怪为什么不把这些数据直接存储到数据库中呢,比如hadoop,反而还需要第三方搞网优的软件开发人员从ftp上读 ...

  9. pgbouncer+pg(fdw)+pg(datanode)分表方案

    pgbouncer+pg(fdw)+pg(datanode)分表方案 (环境RHEL6.5,PG9.4.5,pgbouncer1.5.4,libevent2.0.22) 方案架构图如下: pgboun ...

  10. 20145207 《Java程序设计》第二周学习总结

    开源中国的代码托管 不算调查问卷的话,这是第二篇博客,怎么说呢……感觉好麻烦!哈哈哈哈!不过也就这样吧.按照同学传达的老师的意思就是“写博客就是在重复一天的所学,虽然可能会花一定的时间,但是对于自己是 ...