封装js正则公共库,可直接搬运!

157 阅读10分钟

封装js正则公共库

一、使用步骤

正则工具库说明及使用方法

1、validJson.js文件用来封装正则json库

参数说明:

code:正则编码

nameEn:英文名称

nameCh:中文名称

regExp:正则

remarks:说明

  //regEmail 邮箱-强校验-大小写字母、数字、符号+@+字母、数字、下划线+.+2-4位大小写字母、数字
  {
    code: "R001",
    nameEn: "regEmail",
    nameCh: "邮箱-强校验",
    regExp: /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
    remarks: "大小写字母、数字、符号+@+字母、数字、下划线+.+2-4位大小写字母、数字",
  },
2、validReg.js文件用来封装正则函数

参数说明

code: 参照正则表,选择对应编码

value: 需校验的值

返回值:exposeObj对象

validFlag:正则准确性校验 true/false

regExp:正则公式

regRemarks: 正则说明 (可打印具体查看详情规则)

// 引入正则库
import { validJson } from "../libs/validJson"
export const validReg = (code, value) => {
  let exposeObj = {
    validFlag: true,//正则准确性校验
    regExp: '',//正则公式
    regRemarks: ''//正则说明
  }
  if (typeof value === 'undefined' || value == null || value == '' || value == '-1') {
    exposeObj.validFlag = false;
  } else {
    let validAll = validJson;
    validAll.find(item => {
      if(item.code == code){
        if(item.regExp.test(value)) {
          exposeObj.validFlag = true;
          exposeObj.regExp = item.regExp;
          exposeObj.regRemarks = item.remarks;
        }else {
          exposeObj.validFlag = false;
        }
      }
    })
  }
  return exposeObj
}
3、引入
import { validReg } from "@/libs/validReg";
4、调用

可参考demo

 ruleValidate: {
    email: [
      { required: true, type:'string', message: '邮政编码不能为空', trigger: 'change' },
      { validator (rule, value, callback, source, options) {
        const errors = [];
        if (!validReg('R003', value).validFlag) {
          errors.push('请输入正确的邮政编码')
        }
        callback(errors)
      }}
    ],
  },

二、validJson.js 封装正则json库

参数说明:

code:正则编码

nameEn:英文名称

nameCh:中文名称

regExp:正则

remarks:说明

以下正则均已验证,不想封装可直接拿走

export const validJson = [
  /** 基本信息类 start **/
  //regEmail 邮箱 -- 强校验 -- 大小写字母、数字、符号+@+字母、数字、下划线+.+2-4位大小写字母、数字
  {
    code: "R001",
    nameEn: "regEmail",
    nameCh: "邮箱-强校验",
    regExp: /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
    remarks: "大小写字母、数字、符号+@+字母、数字、下划线+.+2-4位大小写字母、数字",
  },
  //regEmailSimple 邮箱 -- 非强校验 -- 大小写字母、数字、符号组成的邮箱
  {
    code: "R002",
    nameEn: "regEmailSimple",
    nameCh: "邮箱-非强校验",
    regExp: /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/,
    remarks: "大小写字母、数字、符号组成的邮箱",
  },
  //  //regPostalCode 邮政编码 -- 强校验 0开头 +(1-7)任意一位;1开头 +(0-356)任意一位;2开头 +(0-7)任意一位;3开头0-6;4开头0-7;5开头1-7;6开头1-7;7开头0-5;8开头013-6 +  4位数字
  {
    code: "R003",
    nameEn: "regPostalCode",
    nameCh: "邮政编码-强校验",
    regExp: /^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/,
    remarks: "强校验 0开头 +(1-7)任意一位;1开头 +(0-356)任意一位;2开头 +(0-7)任意一位;3开头0-6;4开头0-7;5开头1-7;6开头1-7;7开头0-5;8开头013-6 +  4位数字",
  },
  //regPostCodeSimple 邮政编码 -- 非强校验 -- 6位正整数
  {
    code: "R004",
    nameEn: "regPostCodeSimple",
    nameCh: "邮政编码-非强校验",
    regExp: /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
    remarks: "6位正整数",
  },
  //regMobile 手机号 -- 10位的正整数
  {
    code: "R005",
    nameEn: "regMobile",
    nameCh: "手机号-非强校验",
    regExp: /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
    remarks: "10位的正整数",
  },
  //regTel 电话 -- 0-(2-3)位数字+(7-8)位数字 ;0-(2-3)位数字+(7-8)位数字 +(1-4)位数字
  {
    code: "R006",
    nameEn: "regTel",
    nameCh: "电话",
    regExp: /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/,
    remarks: "0-(2-3)位数字+(7-8)位数字 ;0-(2-3)位数字+(7-8)位数字 +(1-4)位数字",
  },
  //regName 中文姓名 -- 不限制长度的中文
  {
    code: "R007",
    nameEn: "regName",
    nameCh: "中文姓名-非强校验",
    regExp: /^[\u4E00-\u9FA5]+$/,
    remarks: "不限制长度的中文",
  },
  //regChinaName 中文姓名 -- 2-16位中文
  {
    code: "R008",
    nameEn: "regChinaName",
    nameCh: "中文姓名-强校验",
    regExp: /^([\u4e00-\u9fa5·]{2,16})$/,
    remarks: "2-16位中文",
  },
  //regEngName 英文姓名 -- 字母开头并结尾的,中间可含字母0-20个
  {
    code: "R009",
    nameEn: "regEngName",
    nameCh: "英文姓名",
    regExp: /(^[a-zA-Z]{1}[a-zA-Z\s]{0,20}[a-zA-Z]{1}$)/,
    remarks: "字母开头并结尾的,中间可含字母0-20个",
  },
  //regBankNum 银行卡号 -- 非强校验 -- 16位或19位数字
  {
    code: "R010",
    nameEn: "regBankNum",
    nameCh: "银行卡号-非强校验",
    regExp: /^(\d{16}|\d{19})$/,
    remarks: "16位或19位数字",
  },
  //regBankId 银行卡号 -- 强校验 -- 非零开头的16-19位数字
  {
    code: "R011",
    nameEn: "regBankId",
    nameCh: "银行卡号-强校验",
    regExp: /^([1-9]{1})(\d{15}|\d{18})$/,
    remarks: "非零开头的16-19位数字",
  },
  //regBook 户口本 -- 3-21位大小写字母数字
  {
    code: "R012",
    nameEn: "regBook",
    nameCh: "户口本",
    regExp: /^[a-zA-Z0-9]{3,21}$/,
    remarks: "3-21位大小写字母数字",
  },
  //regIdCardAll 一二代身份证号 -- 强校验
  {
    code: "R013",
    nameEn: "regIdCardAll",
    nameCh: "一二代身份证号-强校验",
    regExp: /(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/,
    remarks: "一二代身份证号强校验规则",
  },
  //regUserId 身份证号 -- 非强校验 -- 15/18位数字/17位数字+x
  {
    code: "R014",
    nameEn: "regUserId",
    nameCh: "身份证号-非强校验",
    regExp: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
    remarks: "15/18位数字/17位数字+x",
  },
  //regPassport 护照 -- 非强校验 -- 3-21位大小写字母数字;P+7位数字;G+8位数字
  {
    code: "R015",
    nameEn: "regPassport",
    nameCh: "护照-非强校验",
    regExp: /^[a-zA-Z0-9]{3,21}$/ || /^(P\d{7})|(G\d{8})$/,
    remarks: "3-21位大小写字母数字;P+7位数字;G+8位数字",
  },
  //regPassportStrict 护照 -- 强校验 1、以EeKkGgDdSsPpHh中的任意一位为开头+8位数字;2、以Ee开头+大小写a-f+7位数字;3、以DdSsPp+Ee开头+7位数字;4、以Kk+Jj为开头+7位数字; 5、以Mm+Aa为开头+7位数字;6、以1+45为开头+7位数字
  {
    code: "R016",
    nameEn: "regPassportStrict",
    nameCh: "护照-强校验",
    regExp: /(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)/,
    remarks: "1、以EeKkGgDdSsPpHh中的任意一位为开头+8位数字;2、以Ee开头+大小写a-f+7位数字;3、以DdSsPp+Ee开头+7位数字;4、以Kk+Jj为开头+7位数字; 5、以Mm+Aa为开头+7位数字;6、以1+45为开头+7位数字",
  },
  //regOfficers 军官证 -- 7-21位大小写字母数字
  {
    code: "R017",
    nameEn: "regOfficers",
    nameCh: "军官证",
    regExp: /^[a-zA-Z0-9]{7,21}$/,
    remarks: "7-21位大小写字母数字",
  },
  //regPsw 账户密码 -- 由8-16个字符组成,至少包含大写字母、小写字母和数字
  {
    code: "R018",
    nameEn: "regPsw",
    nameCh: "账户密码",
    regExp: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$/,
    remarks: "由8-16个字符组成,至少包含大写字母、小写字母和数字",
  },
  //regPswVerd 密码验证 -- 6-20位,字母、数字、符号的组合
  {
    code: "R019",
    nameEn: "regPswVerd",
    nameCh: "密码验证",
    regExp: /^[\w.]{6,20}$/,
    remarks: "6-20位,字母、数字、符号的组合",
  },
  //regWebUrl 网址 -- http/https/ftp开头 + :// + 大小写字母/数字/.- + . + 2-6位大小写字母 或者 http/https/ftp开头 + :// + 大小写字母/数字/.- + . + 2-6位大小写字母 + / + 0-多次 + .- + / 
  {
    code: "R020",
    nameEn: "regWebUrl",
    nameCh: "网址",
    regExp: /^((https?|ftp|http):\/\/)?([\da-z.-]+)\.([a-z.]{2,6})(\/\w\.-]*)*\/?/,
    remarks: "http/https/ftp开头 + :// + 大小写字母/数字/.- + . + 2-6位大小写字母 或者 http/https/ftp开头 + :// + 大小写字母/数字/.- + . + 2-6位大小写字母 + / + 0-多次 + .- + / ",
  },
  //regQqNumber QQ号 - 非0开头5-11位数字
  {
    code: "R021",
    nameEn: "regQqNumber",
    nameCh: "QQ号",
    regExp: /^[1-9][0-9]{4,10}$/,
    remarks: "非0开头5-11位数字",
  },
  //regWxCode 微信号 大小写字母开头+ 5-19位大小写字母数字-_
  {
    code: "R022",
    nameEn: "regWxCode",
    nameCh: "微信号",
    regExp: /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/,
    remarks: "大小写字母开头+ 5-19位大小写字母数字-_",
  },
  /** 基本信息类 end **/


  /** 数字/金额类 start **/
  //regPassWordNum 纯数字
  {
    code: "R023",
    nameEn: "regPassWordNum",
    nameCh: "纯数字",
    regExp: /\d/,
    remarks: "纯数字",
  },
  //regPassWordMin 小写字母
  {
    code: "R024",
    nameEn: "regPassWordMin",
    nameCh: "小写字母",
    regExp: /[a-z]/,
    remarks: "小写字母",
  },
  //regPassWordMax 大写字母
  {
    code: "R025",
    nameEn: "regPassWordMax",
    nameCh: "大写字母",
    regExp: /[A-Z]/,
    remarks: "大写字母",
  },
  //regPassWordSpe 特殊字符
  {
    code: "R026",
    nameEn: "regPassWordSpe",
    nameCh: "特殊字符",
    regExp: /\W/,
    remarks: "特殊字符",
  },
  //regPassWordDreg 包含大小写字母,数字,特殊字符
  {
    code: "R027",
    nameEn: "regPassWordDreg",
    nameCh: "包含大小写字母,数字,特殊字符",
    regExp: /(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9])/,
    remarks: "包含大小写字母,数字,特殊字符",
  },
  //regNum 非负整数
  {
    code: "R028",
    nameEn: "regNum",
    nameCh: "非负整数",
    regExp: /^\+?[0-9]\d*$/,
    remarks: "非负整数",
  },
  //regPlusNum 正整数或最多保留两位小数
  {
    code: "R029",
    nameEn: "regPlusNum",
    nameCh: "正整数或最多保留两位小数",
    regExp: /(^[1-9](\d+)?(\.\d{1,2})?$)|(^0$)|(^\d\.\d{1,2}$)/,
    remarks: "正整数或最多保留两位小数",
  },
  //regBiLi 1-100整数和小数
  {
    code: "R030",
    nameEn: "regBiLi",
    nameCh: "1-100整数和小数",
    regExp: /^(([1-9]\d{0,1})|100)(\.\d{1,2})?$/,
    remarks: "1-100整数和小数",
  },
  //regInteger 正整数(不包括0)
  {
    code: "R031",
    nameEn: "regInteger",
    nameCh: "正整数(不包括0)",
    regExp: /^[1-9]\d*$/,
    remarks: "正整数(不包括0)",
  },
  //regWeight 体重 1-500整数和小数
  {
    code: "R032",
    nameEn: "regWeight",
    nameCh: "体重",
    regExp: /(^[1-9]{1}[0-9]{0,1}$)|((^([1-9]{1}[0-9]{0,1})?(\.\d{1,2})$))|(^[1-4]{1}[0-9]{0,2}$)|((^([1-4]{1}[0-9]{0,2})?(\.\d{1,2})$))/,
    remarks: "体重 1-500整数和小数",
  },
  //regHeight 身高 1-300整数和小数
  {
    code: "R033",
    nameEn: "regHeight",
    nameCh: "身高",
    regExp: /(^[1-9]{1}[0-9]{0,1}$)|((^([1-9]{1}[0-9]{0,1})?(\.\d{1,2})$))|(^[1-2]{1}[0-9]{0,2}$)|((^([1-2]{1}[0-9]{0,2})?(\.\d{1,2})$))/,
    remarks: "1-300整数和小数",
  },
  //regProposalCode 投保单号 -- 字母加数据(可以0开头)
  {
    code: "R034",
    nameEn: "regProposalCode",
    nameCh: "投保单号",
    regExp: /[^\u4e00-\u9fa5]+$/,
    remarks: "字母加数据(可以0开头)",
  },
  //regFactorageMoney 金额校验 -- 15位数字,其中小数4位
  {
    code: "R035",
    nameEn: "regFactorageMoney",
    nameCh: "金额校验",
    regExp: /^(([1-9]\d{0,10})|0)(\.\d{0,4})?$/,
    remarks: "15位数字,其中小数4位",
  },
  //regLNL 字母、数字、下划线、横线
  {
    code: "R036",
    nameEn: "regLNL",
    nameCh: "字母、数字、下划线、横线",
    regExp: /^[\w\-]+$/,
    remarks: "字母、数字、下划线、横线",
  },
  //regTest 只能录入6位数字和字母
  {
    code: "R037",
    nameEn: "regTest",
    nameCh: "只能录入6位数字和字母",
    regExp: /^[0-9a-zA-Z]{6}$/,
    remarks: "只能录入6位数字和字母",
  },
  //regValidYuan 验证元
  {
    code: "R038",
    nameEn: "regValidYuan",
    nameCh: "验证元",
    regExp: /^[0-9]{0,9}([.][0-9]{1,2})?$/,
    remarks: "验证元",
  },
  //regValidWYuan 验证万元
  {
    code: "R039",
    nameEn: "regValidWYuan",
    nameCh: "验证万元",
    regExp: /^[0-9]{0,5}([.][0-9]{1,2})?$/,
    remarks: "验证万元",
  },
  //regTenNum 10位正整数
  {
    code: "R040",
    nameEn: "regTenNum",
    nameCh: "10位正整数",
    regExp: /^[1-9][0-9]{0,9}$/,
    remarks: "10位正整数",
  },
  //regNumAll 验证是否为全数字
  {
    code: "R041",
    nameEn: "regNumAll",
    nameCh: "验证是否为全数字",
    regExp: /^(\d|[1-9]\d+)(\.\d+)?$/,
    remarks: "验证是否为全数字",
  },
  /** 数字/金额类 end **/

  /** 其他拓展项 **/
  //regPswSimple 校验密码强度1 -- 包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间
  {
    code: "R042",
    nameEn: "regPswSimple",
    nameCh: "校验密码强度1",
    regExp: /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/,
    remarks: "包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间",
  },
  //regPswStrict 校验密码强度2  -- 8到16位 必须有 小写字母+大写字母+特殊字符+数字
  {
    code: "R043",
    nameEn: "regPswStrict",
    nameCh: "校验密码强度2",
    regExp: /(?=^.{8,16}$)(?=.*\d)(?=.*\W+)(?=.*[a-z])(?=.*[A-Z])(?!.*\n).*$/,
    remarks: "8到16位 必须有 小写字母+大写字母+特殊字符+数字",
  },
  //regDate 校验日期 -- “yyyy-mm-dd“ 格式的日期校验,已考虑平闰年
  {
    code: "R044",
    nameEn: "regDate",
    nameCh: "校验日期",
    regExp: /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/,
    remarks: "“yyyy-mm-dd“ 格式的日期校验,已考虑平闰年",
  },
  //regMoney 校验金额 -- 金额校验,精确到2位小数
  {
    code: "R045",
    nameEn: "regMoney",
    nameCh: "校验金额",
    regExp: /^[0-9]+(.[0-9]{2})?$/,
    remarks: "金额校验,精确到2位小数",
  },
  //regPhoneStrict 手机号 -- 国内 13、15、18开头的手机号正则表达式。(可根据目前国内收集号扩展前两位开头号码)
  {
    code: "R046",
    nameEn: "regPhoneStrict",
    nameCh: "手机号-强校验",
    regExp: /^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$/,
    remarks: "国内 13、15、18开头的手机号正则表达式。(可根据目前国内收集号扩展前两位开头号码)",
  },
]

三、validReg.js 封装正则函数

参数说明

code: 参照正则表,选择对应编码

value: 需校验的值

返回:exposeObj对象

validFlag:正则准确性校验 true/false

regExp:正则公式

regRemarks: 正则说明 可打印具体查看详情规则

// 正则库
import { validJson } from "../libs/validJson"
export const validReg = (code, value) => {
  let exposeObj = {
    validFlag: true,//正则准确性校验
    regExp: '',//正则公式
    regRemarks: ''//正则说明
  }
  if (typeof value === 'undefined' || value == null || value == '' || value == '-1') {
    exposeObj.validFlag = false;
  } else {
    let validAll = validJson;
    validAll.find(item => {
      if(item.code == code){
        if(item.regExp.test(value)) {
          exposeObj.validFlag = true;
          exposeObj.regExp = item.regExp;
          exposeObj.regRemarks = item.remarks;
        }else {
          exposeObj.validFlag = false;
        }
      }
    })
  }
  return exposeObj
}

export const validCredNum = (type, credNum) => {
  var validFlag = true;
  if (typeof credNum === 'undefined' || credNum == null || credNum == '' || credNum == '-1') {
      validFlag = false;
  } else {
      if (type == '1') { // 身份证
          validFlag = isCardID(credNum);
      } else if (type == '3') { // 护照号
          GetLength(Trim(credNum, 'g')) < 3 ? validFlag = false : validFlag = true;
      } else if (type == '4') { // 台湾居民来往大陆通行证(台胞证)、或港澳居民往来内地通行证(回乡证)
          GetLength(Trim(credNum, 'g')) < 8 ? validFlag = false : validFlag = true;
          // validFlag = (/^[a-zA-Z\d]{6,10}$/).test(credNum);
      } else if (type == '5') { // 军官证/警官证
          GetLength(Trim(credNum, 'g')) < 10 || GetLength(Trim(credNum, 'g')) > 18 ? validFlag = false : validFlag = true;
          // validFlag = (/^[a-zA-Z\d]{6,10}$/).test(credNum);
      } else if (type == '6') { // 异常身份证
          GetLength(Trim(credNum, 'g')) != 18 ? validFlag = false : validFlag = true;
          // validFlag = (/^[a-zA-Z\d]{6,10}$/).test(credNum);
      } else if (type == 'mobile') { // 手机
          if (credNum.length == 10 && credNum.indexOf('09') == 0 || credNum.length == 11 && credNum.indexOf('1') == 0) {
              validFlag = true;
          } else {
              validFlag = false;
          }
          // validFlag = (/^[\+86|86]?1[3|4|5|7|8]\d{9}$/.test(credNum));
      } else if (type == 'name') { // 姓名
          let credName = Trim(credNum, 'g');
          GetLength(credName) < 3 || (/\d+/g).test(credName) || (/[#&]/).test(credName) ? validFlag = false : validFlag = true;
          // validFlag = (/^[\u4e00-\u9fa5a-zA-Z]{2,20}$/).test(credNum);
      } else if (type == 'email') { // 邮箱
          validFlag = (/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(credNum));
      } else if (type == 'postCode') { // 邮政编码
          validFlag = (/^[0-9]{6}$/).test(credNum);
      } else if (type == 'passWord') { // 密码验证 6-20位,字母、数字、符号的组合
          validFlag = (/^[\w.]{6,20}$/).test(credNum);
      } else if (type == 'number') { // 验证是否为全数字
          validFlag = (/^(\d|[1-9]\d+)(\.\d+)?$/).test(credNum);
      } else if (type == 'symbol') {
          credNum.length < 12 ? validFlag = false : validFlag = true; // 详细地址
      } else if (type == 'protection') {
          validFlag = (/^[a-zA-Z0-9]{3,21}$/ || /^(P\d{7})|(G\d{8})$/).test(credNum); // 护照
      } else if (type == 'officers') {
          validFlag = (/^[a-zA-Z0-9]{7,21}$/).test(credNum); // 军官证
      } else if (type == 'book') {
          validFlag = (/^[a-zA-Z0-9]{3,21}$/).test(credNum); //  户口本
      } else if (type == 'bankCard') {
          validFlag = (/^(\d{16}|\d{19})$/).test(credNum); //  银行卡
      } else if (type == 'telephone') {
          if (credNum.indexOf('400') == 0 || credNum.indexOf('800') == 0) {
              if (credNum.length != 10) {
                  validFlag = false;
              }
          } else {
              validFlag = (/^0\d{2,3}-?\d{7,8}$/).test(credNum);
          }
      } else if (type == "height"){
        validFlag = (/^[1-9][0-9]{0,}([.][0-9]{1,2})?$/).test(credNum)
      } else if (type == "weight"){
        validFlag = (/^[1-9][0-9]{0,}([.][0-9]{1,2})?$/).test(credNum)
      } else if (type == "income"){
        validFlag = (/^(0|\+?[1-9][0-9]*)$/).test(credNum)
      } else if (type == 'sortMsg'){     //验证码6位数字
        validFlag = (/^[0-9]{6}$/).test(credNum);
      } else if (type == 'yuanMsg'){     //验证yuan   11wei  小数点后两位
        validFlag = (/^[0-9]{0,9}([.][0-9]{1,2})?$/).test(credNum)
      } else if (type == 'wanMsg'){     //验证万元   8wei  小数点后两位
        validFlag = (/^[0-9]{0,5}([.][0-9]{1,2})?$/).test(credNum)
      } else if (type == 'positiveInteger'){     //10位正整数
        validFlag = (/^[1-9][0-9]{0,9}$/).test(credNum)
      }
  }
  return validFlag;
};

export const isCardID = sId => {
  var that = this;
  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: '澳门',
      83: '台湾',
      91: '国外'
  };
  var iSum = 0;
  var info = '';
  if (!/^\d{17}(\d|x)$/i.test(sId)) {
      return false;
  }
  sId = sId.replace(/x$/i, 'a');
  if (aCity[parseInt(sId.substr(0, 2))] == null) {
      return false;
  }
  var sBirthday = sId.substr(6, 4) + '-' + Number(sId.substr(10, 2)) + '-' + Number(sId.substr(12, 2));
  var d = new Date(sBirthday.replace(/-/g, '/'));
  if (sBirthday != (d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate())) {
      return false;
  }
  for (var i = 17; i >= 0; i--) {
      iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);
  }
  if (iSum % 11 != 1) {
      return false;
  }
  // aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女");//此次还可以判断出输入的身份证号的人性别
  return true;
};

附:正则参考表

编码英文名称中文名称规则
R001regEmail邮箱 - 强校验大小写字母、数字、符号+@+字母、数字、下划线+.+2-4位大小写字母、数字
R002regEmailSimple邮箱 - 非强校验大小写字母、数字、符号组成的邮箱
R003regPostalCode邮政编码 - 强校验0开头 +(1-7)任意一位;1开头 +(0-356)任意一位;2开头 +(0-7)任意一位;3开头0-6;4开头0-7;5开头1-7;6开头1-7;7开头0-5;8开头013-6 + 4位数字
R004regPostCodeSimple邮政编码 - 非强校验6位正整数
R005regMobile手机号10位的正整数
R006regTel电话0-(2-3)位数字+(7-8)位数字 ;0-(2-3)位数字+(7-8)位数字 +(1-4)位数字
R007regName中文姓名 - 非强校验不限制长度的中文
R008regChinaName中文姓名 - 强校验2-16位中文
R009regEngName英文姓名字母开头并结尾的,中间可含字母0-20个
R010regBankNum银行卡号 - 非强校验16位或19位数字
R011regBankId银行卡号 - 强校验非零开头的16-19位数字
R012regBook户口本3-21位大小写字母数字
R013regIdCardAll一二代身份证号 - 强校验一二代身份证号 - 强校验
R014regUserId身份证号 - 非强校验15/18位数字/17位数字+x
R015regPassport护照 - 非强校验3-21位大小写字母数字;P+7位数字;G+8位数字
R016regPassportStrict护照 - 强校验1、以EeKkGgDdSsPpHh中的任意一位为开头+8位数字;2、以Ee开头+大小写a-f+7位数字;3、以DdSsPp+Ee开头+7位数字;4、以Kk+Jj为开头+7位数字; 5、以Mm+Aa为开头+7位数字;6、以1+45为开头+7位数字
R017regOfficers军官证7-21位大小写字母数字
R018regPsw账户密码由8-16个字符组成,至少包含大写字母、小写字母和数字
R019regPswVerd密码验证6-20位,字母、数字、符号的组合
R020regWebUrl网址http/https/ftp开头 + :// + 大小写字母/数字/.- + . + 2-6位大小写字母 或 http/https/ftp开头 + :// + 大小写字母/数字/.- + . + 2-6位大小写字母 + / + 0-多次 + .- + /
R021regQqNumberQQ号非0开头5-11位数字
R022regWxCode微信号大小写字母开头+ 5-19位大小写字母数字-_
R023regPassWordNum纯数字纯数字
R024regPassWordMin小写字母小写字母
R025regPassWordMax大写字母大写字母
R026regPassWordSpe特殊字符特殊字符
R027regPassWordDreg包含大小写字母,数字,特殊字符包含大小写字母,数字,特殊字符
R028regNum非负整数非负整数
R029regPlusNum正整数或最多保留两位小数正整数或最多保留两位小数
R030regBiLi1-100整数和小数1-100整数和小数
R031regInteger正整数(不包括0)正整数(不包括0)
R032regWeight体重1-500整数和小数
R033regHeight身高1-300整数和小数
R034regProposalCode投保单号字母加数据(可以0开头)
R035regFactorageMoney金额校验15位数字,其中小数4位
R036regLNL字母、数字、下划线、横线字母、数字、下划线、横线
R037regTest只能录入6位数字和字母只能录入6位数字和字母
R038regValidYuan验证元验证元
R039regValidWYuan验证万元验证万元
R040regTenNum10位正整数10位正整数
R041regNumAll验证是否为全数字数字
R042regPswSimple校验密码强度1包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间
R043regPswStrict校验密码强度28到16位 必须有 小写字母+大写字母+特殊字符+数字
R044regDate校验日期“yyyy-mm-dd“ 格式的日期校验,已考虑平闰年
R045regMoney校验金额金额校验,精确到2位小数
R046regPhoneStrict校验手机号 - 强校验下面是国内 13、15、18开头的手机号正则表达式。(可根据目前国内收集号扩展前两位开头号码)