封装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;
};
附:正则参考表
| 编码 | 英文名称 | 中文名称 | 规则 |
|---|---|---|---|
| R001 | regEmail | 邮箱 - 强校验 | 大小写字母、数字、符号+@+字母、数字、下划线+.+2-4位大小写字母、数字 |
| R002 | regEmailSimple | 邮箱 - 非强校验 | 大小写字母、数字、符号组成的邮箱 |
| R003 | 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位数字 |
| R004 | regPostCodeSimple | 邮政编码 - 非强校验 | 6位正整数 |
| R005 | regMobile | 手机号 | 10位的正整数 |
| R006 | regTel | 电话 | 0-(2-3)位数字+(7-8)位数字 ;0-(2-3)位数字+(7-8)位数字 +(1-4)位数字 |
| R007 | regName | 中文姓名 - 非强校验 | 不限制长度的中文 |
| R008 | regChinaName | 中文姓名 - 强校验 | 2-16位中文 |
| R009 | regEngName | 英文姓名 | 字母开头并结尾的,中间可含字母0-20个 |
| R010 | regBankNum | 银行卡号 - 非强校验 | 16位或19位数字 |
| R011 | regBankId | 银行卡号 - 强校验 | 非零开头的16-19位数字 |
| R012 | regBook | 户口本 | 3-21位大小写字母数字 |
| R013 | regIdCardAll | 一二代身份证号 - 强校验 | 一二代身份证号 - 强校验 |
| R014 | regUserId | 身份证号 - 非强校验 | 15/18位数字/17位数字+x |
| R015 | regPassport | 护照 - 非强校验 | 3-21位大小写字母数字;P+7位数字;G+8位数字 |
| R016 | 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位数字 |
| R017 | regOfficers | 军官证 | 7-21位大小写字母数字 |
| R018 | regPsw | 账户密码 | 由8-16个字符组成,至少包含大写字母、小写字母和数字 |
| R019 | regPswVerd | 密码验证 | 6-20位,字母、数字、符号的组合 |
| R020 | regWebUrl | 网址 | http/https/ftp开头 + :// + 大小写字母/数字/.- + . + 2-6位大小写字母 或 http/https/ftp开头 + :// + 大小写字母/数字/.- + . + 2-6位大小写字母 + / + 0-多次 + .- + / |
| R021 | regQqNumber | QQ号 | 非0开头5-11位数字 |
| R022 | regWxCode | 微信号 | 大小写字母开头+ 5-19位大小写字母数字-_ |
| R023 | regPassWordNum | 纯数字 | 纯数字 |
| R024 | regPassWordMin | 小写字母 | 小写字母 |
| R025 | regPassWordMax | 大写字母 | 大写字母 |
| R026 | regPassWordSpe | 特殊字符 | 特殊字符 |
| R027 | regPassWordDreg | 包含大小写字母,数字,特殊字符 | 包含大小写字母,数字,特殊字符 |
| R028 | regNum | 非负整数 | 非负整数 |
| R029 | regPlusNum | 正整数或最多保留两位小数 | 正整数或最多保留两位小数 |
| R030 | regBiLi | 1-100整数和小数 | 1-100整数和小数 |
| R031 | regInteger | 正整数(不包括0) | 正整数(不包括0) |
| R032 | regWeight | 体重 | 1-500整数和小数 |
| R033 | regHeight | 身高 | 1-300整数和小数 |
| R034 | regProposalCode | 投保单号 | 字母加数据(可以0开头) |
| R035 | regFactorageMoney | 金额校验 | 15位数字,其中小数4位 |
| R036 | regLNL | 字母、数字、下划线、横线 | 字母、数字、下划线、横线 |
| R037 | regTest | 只能录入6位数字和字母 | 只能录入6位数字和字母 |
| R038 | regValidYuan | 验证元 | 验证元 |
| R039 | regValidWYuan | 验证万元 | 验证万元 |
| R040 | regTenNum | 10位正整数 | 10位正整数 |
| R041 | regNumAll | 验证是否为全数字 | 数字 |
| R042 | regPswSimple | 校验密码强度1 | 包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间 |
| R043 | regPswStrict | 校验密码强度2 | 8到16位 必须有 小写字母+大写字母+特殊字符+数字 |
| R044 | regDate | 校验日期 | “yyyy-mm-dd“ 格式的日期校验,已考虑平闰年 |
| R045 | regMoney | 校验金额 | 金额校验,精确到2位小数 |
| R046 | regPhoneStrict | 校验手机号 - 强校验 | 下面是国内 13、15、18开头的手机号正则表达式。(可根据目前国内收集号扩展前两位开头号码) |