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 相关文章推荐
字符串的replace方法应用浅析
Dec 06 Javascript
jQuery Tools tab使用介绍
Jul 14 Javascript
JQuery给元素添加/删除节点比如select
Apr 02 Javascript
js日期相关函数总结分享
Oct 15 Javascript
node.js中的fs.writeFile方法使用说明
Dec 14 Javascript
JavaScript简单表格编辑功能实现方法
Apr 16 Javascript
轻松掌握JavaScript状态模式
Sep 07 Javascript
微信小程序 向左滑动删除功能的实现
Mar 10 Javascript
微信小程序 侧滑删除(左滑删除)
May 23 Javascript
详解Vue2.0里过滤器容易踩到的坑
Jun 01 Javascript
浅析Vue 和微信小程序的区别、比较
Aug 03 Javascript
vue-cli —— 如何局部修改Element样式
Oct 22 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实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
javascript运行机制之执行顺序理解
2020/08/03 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
深入理解Python3 内置函数大全
2017/11/23 Python
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
opencv实现简单人脸识别
2021/02/19 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
CSS3属性 line-clamp控制文本行数的使用
2020/03/19 HTML / CSS
HTML5应用之文件上传
2016/12/30 HTML / CSS
一套PHP的笔试题
2013/05/31 面试题
询价采购方案
2014/06/09 职场文书
博士给导师的自荐信
2015/03/06 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
趣味运动会广播稿
2015/08/19 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript