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 相关文章推荐
关于IE7 IE8弹出窗口顶上
Dec 22 Javascript
js对数字的格式化使用说明
Jan 12 Javascript
JQuery里选择超链接的实现代码
May 22 Javascript
表格单元格交错着色实现思路及代码
Apr 01 Javascript
深入探秘jquery瀑布流的实现
Jan 30 Javascript
AngularJS中的API(接口)简单实现
Jul 28 Javascript
使用grunt合并压缩js和css文件的方法
Mar 02 Javascript
JS排序之快速排序详解
Apr 08 Javascript
vue 使用html2canvas将DOM转化为图片的方法
Sep 11 Javascript
在vue中获取token,并将token写进header的方法
Sep 26 Javascript
Vue 动态组件与 v-once 指令的实现
Feb 12 Javascript
Layui实现主窗口和Iframe层参数传递
Nov 14 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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
PHP垃圾回收机制简单说明
2010/07/22 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
JavaScript游戏之优化篇
2010/11/08 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
详解Django CAS 解决方案
2019/10/30 Python
Python 切分数组实例解析
2019/11/07 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
python与js主要区别点总结
2020/09/13 Python
python 带时区的日期格式化操作
2020/10/23 Python
酒吧总经理岗位职责
2013/12/10 职场文书
环卫工人慰问信
2015/02/15 职场文书
2015年环保局工作总结
2015/05/22 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书
Javascript webpack动态import
2022/04/19 Javascript