Javascript验证方法大全


Posted in Javascript onSeptember 21, 2015

本文整理了关于Javascript表单验证的所有涉及到的,大家仔细阅读一定会有所收获的 

//验证字符串非空 


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\d2|0\d{2})[- ]?)?\d{8}|((0\d3|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\d2|0\d{2})[- ]?)?\d{8}|((0\d3|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更有帮助。

Javascript 相关文章推荐
lib.utf.js
Aug 21 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
Jun 15 Javascript
js实现图片从左往右渐变切换效果的方法
Feb 06 Javascript
JavaScript中String.prototype用法实例
May 20 Javascript
使用AngularJS处理单选框和复选框的简单方法
Jun 19 Javascript
javascript实现数组中的内容随机输出
Aug 11 Javascript
通俗易懂地解释JS中的闭包
Oct 23 Javascript
js原生实现移动端手指滑动轮播图效果的示例
Jan 02 Javascript
jquery radio 动态控制选中失效问题的解决方法
Feb 28 jQuery
vuex实现的简单购物车功能示例
Feb 13 Javascript
微信小程序使用echarts获取数据并生成折线图
Oct 16 Javascript
js实现超级玛丽小游戏
Mar 18 Javascript
JavaScript验证Email(3种方法)
Sep 21 #Javascript
基于jQuery实现多层次的手风琴效果附源码
Sep 21 #Javascript
基于insertBefore制作简单的循环插空效果
Sep 21 #Javascript
JS实现适合于后台使用的动画折叠菜单效果
Sep 21 #Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 #Javascript
JS+CSS实现简单的二级下拉导航菜单效果
Sep 21 #Javascript
JS实现超简单的仿QQ折叠菜单效果
Sep 21 #Javascript
You might like
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
ThinkPHP路由详解
2015/07/27 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
javascript dom追加内容实现示例
2013/09/21 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
windows下安装python paramiko模块的代码
2013/02/10 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
简单实现python收发邮件功能
2018/01/05 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
应聘自荐书
2013/10/08 职场文书
分公司经理任命书
2014/06/05 职场文书
群众路线专项整治方案
2014/10/27 职场文书
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android