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动画效果类封装代码
Aug 28 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
Dec 27 Javascript
dojo随手记 gird组件引用
Feb 24 Javascript
js网页中的(运行代码)功能实现思路
Feb 04 Javascript
JS写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
jQuery使用post方法提交数据实例
Mar 25 Javascript
12306验证码破解思路分享
Mar 25 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
Apr 30 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
May 26 Javascript
老生常谈JavaScript数组的用法
Jun 10 Javascript
基于Vuex无法观察到值变化的解决方法
Mar 01 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
Oct 10 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
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
新版PHP将向Java靠拢
2006/10/09 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
jQuery判断元素上是否绑定了指定事件的方法
2015/03/17 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
Python3使用requests发闪存的方法
2016/05/11 Python
python非递归全排列实现方法
2017/04/10 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
Python实现数字的格式化输出
2020/08/01 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
网上卖盒饭创业计划书
2014/01/26 职场文书
社区创先争优承诺书
2014/08/30 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang