JS中常用的正则表达式


Posted in Javascript onSeptember 29, 2016

以下收录一些我经常用到的正则表达式,因为工作场景中用到正则的地方几乎都跟validate插件的验证有关系,所以以下正则也是$.validator.addMethod() 的拓展:

validate: http://jqueryvalidation.org/

电话验证

/**
 * 手机
 * */
$.validator.addMethod("isMobile", function (value, element) {
  var reg = /^((1[3-8][0-9])+\d{8})$/;
  return this.optional(element) || (reg.test(value));
}, "手机格式不正确");
/**
 * 号码,固话与手机都可以
 * */
jQuery.validator.addMethod("allPhone", function(v, e) {
    return this.optional(e) || /^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/.test(v)||/^(1(([35][0-9])|(47)|[8][01236789]))\d{8}$/.test(v);},
  "请输入正确的号码:区号-电话号码/手机号");
/**
 * 固话、传真,传真格式与固话是一样的
 * */
jQuery.validator.addMethod("isTel", function(v, e) { return this.optional(e) || /^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/.test(v);}, "请输入正确的电话号码");

数字验证

/**
 * 正整数
 * */
$.validator.addMethod("ispositivenum", function (value, element) {
  var reg = /^([0]|[1-9]\d*)$/;
  return this.optional(element) || (reg.test(value));
}, "请输入正整数");
/**
 * 正数(包括浮点数)
 * */
$.validator.addMethod("pFloatTwo", function (value, element) {
  return this.optional(element) || (/^([1-9]\d*|[0])(\.\d{1,2})?$/.test(value));
}, "请输入正数,最多保留两位小数");
/**
 * 价格(包括浮点数)最大值99999.99
 * */
$.validator.addMethod("price", function (value, element) {
  return this.optional(element) || (value>0&&(/^([1-9]\d{0,4}|[0])(\.\d{1,2})?$/.test(value)));
}, "请输入正数,最大值99999.99,最多保留两位小数");
/**
 * 规格
 * */
$.validator.addMethod("size", function (value, element) {
  var reg = /^[1-9]\d{0,4}$/;
  return this.optional(element) || (reg.test(value));
}, "请输入正整数,最大值99999");
/**
 * 数量
 * */
$.validator.addMethod("qty", function (value, element) {
  return this.optional(element) || (value>0 && (/^([1-9]\d{0,4}|[0])(\.\d{1,3})?$/.test(value)));
}, "请输入正数,最大值99999.999,最多保留三位小数");

车牌号码验证

/**
 * 车牌号码验证
 * */
$.validator.addMethod("isCarNo", function(value, element){
  var reg = /^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_\u4e00-\u9fa5]$|^[a-zA-Z]{2}\d{7}$ /;
  return this.optional(element) || (reg.test(value));
},"请输入正确的车牌号码,大小写不区分");

身份证号验证包括15位18位身份证验证

//身份证15位转18位中,计算校验位即最后一位
function GetVerifyBit(id){
  var result;
  var nNum=eval(id.charAt(0)*7+id.charAt(1)*9+id.charAt(2)*10+id.charAt(3)*5+id.charAt(4)*8+id.charAt(5)*4+id.charAt(6)*2+id.charAt(7)*1+id.charAt(8)*6+id.charAt(9)*3+id.charAt(10)*7+id.charAt(11)*9+id.charAt(12)*10+id.charAt(13)*5+id.charAt(14)*8+id.charAt(15)*4+id.charAt(16)*2);
  nNum=nNum%11;
  switch (nNum) {
    case 0 :
      result="1";
      break;
    case 1 :
      result="0";
      break;
    case 2 :
      result="X";
      break;
    case 3 :
      result="9";
      break;
    case 4 :
      result="8";
      break;
    case 5 :
      result="7";
      break;
    case 6 :
      result="6";
      break;
    case 7 :
      result="5";
      break;
    case 8 :
      result="4";
      break;
    case 9 :
      result="3";
      break;
    case 10 :
      result="2";
      break;
  }
  //document.write(result);
  return result;
}
/*
 功能:验证身份证号码是否有效
 提 示信息:未输入或输入身份证号不正确!
 使用:validateIdCard(obj,birthday,s)//s:1为男,0为女
 返回:0,1,2,3,4,5
 */
function validateIdCard(obj,birthday,s){
  var aCity={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:"国 外"};
  var iSum = 0;
  //var info = "";
  var strIDno = obj;
  if(birthday!=null){
    birthday = birthday.replace(/-/g,"/");
  }
  var idCardLength = strIDno.length;
  if(!/^\d{17}(\d|x)$/i.test(strIDno)&&!/^\d{15}$/i.test(strIDno)){
    return 1; //非法身份证号
  }
  if(aCity[parseInt(strIDno.substr(0,2))]==null){
    return 2;// 非法地区
  }
  // 15位身份证转换为18位
  if (idCardLength==15){
    sBirthday = "19" + strIDno.substr(6,2) + "-" + Number(strIDno.substr(8,2)) + "-" + Number(strIDno.substr(10,2));
    var d = new Date(sBirthday.replace(/-/g,"/"));
    var dd = d.getFullYear().toString() + "-" + (d.getMonth()+1) + "-" + d.getDate();
    var genderNo=strIDno.substr(14,1);
    if(sBirthday != dd){
      return 3; //非法生日
    }
    if(birthday==""){
      return 4;//您还没填写出生日期
    }
    if(birthday!=null && d.getTime()!=new Date(birthday).getTime()){
      return 5; //与出生日期不符
    }
    if(s!=null && s!=0 && s!=1){
      return 6;//您还没填写性别
    }
    if(s!=null && genderNo%2!=s){
      return 7;//与性别不符
    }
    strIDno=strIDno.substring(0,6)+"19"+strIDno.substring(6,15);
    strIDno=strIDno+GetVerifyBit(strIDno);
  }
  // 判断是否大于2078年,小于1900年
  var year =strIDno.substring(6,10);
  if (year<1900 || year>2078 ){
    return 3;//非法生日
  }
  /*if(){
   }*/
  //18位身份证处理
  //在后面的运算中x相当于数字10,所以转换成a
  strIDno = strIDno.replace(/x$/i,"a");
  sBirthday=strIDno.substr(6,4)+"-"+Number(strIDno.substr(10,2))+"-"+Number(strIDno.substr(12,2));
  var d = new Date(sBirthday.replace(/-/g,"/"));
  var genderNo=strIDno.substr(16,1);
  if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate())){
    return 3; //非法生日
  }
  if(birthday==""){
    return 4;//您还没填写出生日期
  }
  if(birthday!=null && d.getTime()!=new Date(birthday).getTime()){
    return 5; //与出生日期不符
  }
  if(s!=null && s!=0 && s!=1){
    return 6;//您还没填写性别
  }
  if(s!=null && genderNo%2!=s){
    return 7;//与性别不符
  }
  // 身份证编码规范验证
  for(var i = 17;i>=0;i --){
    iSum += (Math.pow(2,i) % 11) * parseInt(strIDno.charAt(17 - i),11);
  }
  if(iSum%11!=1){
    return 1;// 非法身份证号
  }
  // 判断是否屏蔽身份证
  var words = new Array();
  words = new Array("11111119111111111","12121219121212121");
  for(var k=0;k<words.length;k++){
    if (strIDno.indexOf(words[k])!=-1){
      return 1;
    }
  }
  return 0;
}
//身份证(无关联验证)
$.validator.addMethod("cretID", function(value, element, param){
  var n=validateIdCard(value);
  var error=["","非法身份证号","地区编号不合法","出生日期不合法"];
  param[1]=error[n];
  return this.optional(element) || n==0;
},$.validator.format("{1}"));

以上所述是小编给大家介绍的JS中常用的正则表达式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript定义函数的方法
Dec 06 Javascript
SeaJS入门教程系列之完整示例(三)
Mar 03 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
Jun 20 Javascript
利用a标签自动解析URL分析网址实例
Oct 20 Javascript
jQuery.each使用详解
Jul 07 Javascript
js简单实现调整网页字体大小的方法
Jul 23 Javascript
基于JavaScript实现移动端无限加载分页
Mar 27 Javascript
基于Vue实现timepicker
Apr 25 Javascript
详解在vue-cli项目中安装node-sass
Jun 21 Javascript
vue中利用Promise封装jsonp并调取数据
Jun 18 Javascript
Vue路由之JWT身份认证的实现方法
Aug 26 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
Mar 08 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
Sep 28 #Javascript
js创建对象几种方式的优缺点对比
Sep 28 #Javascript
AngularJS表单验证中级篇(3)
Sep 28 #Javascript
微信公众号 客服接口的开发实例详解
Sep 28 #Javascript
jQuery解析XML 详解及方法总结
Sep 28 #Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
Sep 28 #Javascript
微信小程序 实例应用(记账)详解
Sep 28 #Javascript
You might like
PHP的PDO连接讲解
2019/01/24 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
JavaScript对象模型-执行模型
2008/04/28 Javascript
Js 本页面传值实现代码
2009/05/17 Javascript
js 省地市级联选择
2010/02/07 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
jQuery实现背景弹性滚动的导航效果
2016/06/01 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
Vue.use源码分析
2017/04/22 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
Python map和reduce函数用法示例
2015/02/26 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
求职信需要的五点内容
2014/02/01 职场文书
领导失职检讨书
2014/02/24 职场文书
2016年记者节感言
2015/12/08 职场文书
导游词之安徽九华山
2019/09/18 职场文书
Oracle表空间与权限的深入讲解
2021/11/17 Oracle