大家好,欢迎来到IT知识分享网。
可根据输入要求,使用以下校验规则:
一、证件号
(一)第一种:没有校验系数版本
内地身份证、港澳台证件
// 身份证号码校验:验证输入内容是否为“ 18位符合身份证号码规则的数字或X(其中x不区分大小写,若需限制X大写,则删除小写x即可)” function isID(val: string) {
return /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test( val ); } // 身份证号-输入限制:只能输入数字或Xx function isInputID(val: string) {
return val.replace(/[^0-9^X^x]/g, ""); } // 身份证号码校验(包含港澳台) function isIDAll(val: string) {
return /^[a-zA-Z0-9()/]/g.test(val); } // 身份证号-输入限制(包含港澳台):只能输入 数字 字母 () / function isInputIDAll(val: string) {
return val.replace(/[^a-zA-Z0-9()/]/g, ""); }
(二)第二种:校验系数版本
参考链接:大陆、港澳台身份证、护照、军官证、户口本的正则表达式
1、大陆身份证
idCardValid(id) {
// 1 "验证通过!", 0 //校验不通过 var format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/; //号码规则校验 if (!format.test(id)) {
return {
'status': 0, 'msg': '身份证号码不合规' }; } //区位码校验 //出生年月日校验 前正则限制起始年份为1900; var year = id.substr(6, 4),//身份证年 month = id.substr(10, 2),//身份证月 date = id.substr(12, 2),//身份证日 time = Date.parse(month + '-' + date + '-' + year),//身份证日期时间戳date now_time = Date.parse(new Date()),//当前时间戳 dates = (new Date(year, month, 0)).getDate();//身份证当月天数 if (time > now_time || date > dates) {
return {
'status': 0, 'msg': '出生日期不合规' } } //校验码判断 var c = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); //系数 var b = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); //校验码对照表 var id_array = id.split(""); var sum = 0; for (var k = 0; k < 17; k++) {
sum += parseInt(id_array[k]) * parseInt(c[k]); } if (id_array[17].toUpperCase() != b[sum % 11].toUpperCase()) {
return {
'status': 0, 'msg': '身份证校验码不合规' } } return {
'status': 1, 'msg': '校验通过' } },
2、港澳身份证
isHKCard(card) {
// 港澳居民来往内地通行证 // 规则: H/M + 10位或6位数字 // 样本: H var reg = /^([A-Z]\d{6,10}(\(\w{1}\))?)$/; if (reg.test(card) === false) {
return {
'status': 0, 'msg': '港澳居民来往内地通行证号码不合规' }; } else {
return {
'status': 1, 'msg': '校验通过' }; } },
3、台湾身份证
isTWCard(card) {
// 台湾居民来往大陆通行证 // 规则: 新版8位或18位数字, 旧版10位数字 + 英文字母 // 样本: 或 B var reg = /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/; if (reg.test(card) === false) {
return {
'status': 0, 'msg': '台湾居民来往大陆通行证号码不合规' }; } else {
return {
'status': 1, 'msg': '校验通过' }; } },
4、护照
isPassPortCard(card) {
// 护照 // 规则: 14/15开头 + 7位数字, G + 8位数字, P + 7位数字, S/D + 7或8位数字,等 // 样本: , G, P var reg = /^([a-zA-z]|[0-9]){5,17}$/; if (reg.test(card) === false) {
return {
'status': 0, 'msg': '护照号码不合规' }; } else {
return {
'status': 1, 'msg': '校验通过' }; } },
5、军官证
isOfficerCard(card) {
// 军官证 // 规则: 军/兵/士/文/职/广/(其他中文) + "字第" + 4到8位字母或数字 + "号" // 样本: 军字第号, 士字第P011816X号 var reg = /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/; if (reg.test(card) === false) {
return {
'status': 0, 'msg': '军官证号不合规' }; } else {
return {
'status': 1, 'msg': '校验通过' }; } },
6、户口本
isAccountCard(card) {
// 户口本 // 规则: 15位数字, 18位数字, 17位数字 + X // 样本: var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if (reg.test(card) === false) {
return {
'status': 0, 'msg': '户口本号码不合规' }; } else {
return {
'status': 1, 'msg': '校验通过' }; } }
二、电话号码
座机、企业座机、移动电话、只能输入数字
// 座机号码校验:验证输入内容是否为“ 以0开头的3-4位区号、4位或7-8位座机号(区号和座机号之间用“-”连接)” // tel 匹配内容、isTel 区号是否必须输入 function isTel(tel: string, isTel: boolean) {
if (isTel) {
return /^[0]\d{2,3}-(\d{7,8}|\d{4})$/.test(tel); } else {
return /^([0]\d{2,3}-)?(\d{7,8}|\d{4})$/.test(tel); } } // 企业座机号码校验:验证输入内容是否为“ 以400或800开头的10位座机号码(格式例如:400-123-1234)” function isTelBusiness(tel: string) {
return /^([4,8][0]{2}-)\d{3}-\d{4}$/.test(tel); } // 移动手机号校验:验证输入内容是否为“ 以1开头,第二位为3~9,后面9位为1~9的数字 ” function isPhone(pone: string) {
return /^[1][3-9]\d{9}$/.test(pone); } // 移动手机号-输入限制:只能输入数字 function isInputPhone(val: any) {
return val.replace(/[^0-9]/g, ""); }
三、邮箱
// 邮箱校验:验证输入内容是否为“ 以com|cn|net结尾的邮箱地址 ” function isEmail(emailInput: string) {
return /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(com|cn|net)$/.test(emailInput); }
四、数
// 自然数校验:验证输入内容是否为“ 自然数(即0、正整数)” function isNaturalNum(val: string) {
return /^\d+$/.test(val); } // 非自然数-输入限制:只能输入自然数(即0、正整数) function isInputNaturalNum(val: string) {
return val.replace(/[^\d*]+/g, ""); } // 整数校验:验证输入内容是否为“ 整数(负整数、0、正整数)” function isIntegralNum(num: string) {
return /(^-?[0-9]([0-9]*)$|^-?[0-9]$)/.test(num); } // 正数校验:验证输入内容是否为“ 大于0的数(包含小数,但不包含0)” function isPositiveNum(num: string) {
return /^(?:[1-9][0-9]*\.[0-9]+|0\.(?!0+$)[0-9]+|[1-9]+\d*)$/.test(num); } // 负数校验:验证输入内容是否为“ 小于0的数(包含小数,但不包含0)” function isNegativeNum(num: string) {
return /^-([1-9]+\d*|[1-9][0-9]*\.[0-9]+|0\.(?!0+$)[0-9]+)$/.test(num); } // 0或正数(包括小数)校验:验证输入内容是否为“ 0或正数(包括小数)” function isPositiveNumOr0(num: string) {
return /^((?:[1-9][0-9]*\.[0-9]+|0\.(?!0+$)[0-9]+|[1-9]+\d*)|[0])$/.test(num); } // 正整数校验:验证输入内容是否为“ 大于0的数(不包含0和小数)” function isPositiveInteger(num: string) {
return /^[1-9][0-9]*$/.test(num); } // 负整数校验:验证输入内容是否为“ 小于0的数(不包含0和小数)” function isNegtiveInteger(num: string) {
return /^-[1-9][0-9]*$/.test(num); } // 浮点数或0 校验:验证输入内容是否为“ 浮点数或0(即,非整数或0)” function isFloatOr0(num: string) {
return /^(0|[+-]?((0|([1-9]\d*))\.\d+)?)*$/.test(num); } // 浮点数(不包括0)校验:验证输入内容是否为“ 浮点数(即,非整数且不为0)” function isFloat(num: string) {
return /^[+-]?((0|([1-9]\d*))\.\d+)?$/.test(num); } // 正浮点数或0 校验:验证输入内容是否为“ 正浮点数或0(即,非整数的正数或0)” function isPositiveFloatOr0(num: string) {
return /^(?:[1-9][0-9]*\.[0-9]+|0\.(?!0+$)[0-9]+|0)$/.test(num); } // 正浮点数(不包括0)校验:验证输入内容是否为“ 正浮点数(即,非整数的正数)” function isPositiveFloat(num: string) {
return /^(?:[1-9][0-9]*\.[0-9]+|0\.(?!0+$)[0-9]+)$/.test(num); } // 保留2位小数校验:验证输入内容是否为“ 保留两位小数的数(正负0.00都可) ” function isKeepTwoDecimal(num: string) {
return /^([+-]?([1-9]*|[0]))(?=.*[.])+(\.\d{2})?$/.test(num); } // 正整数或保留两位小数校验:验证输入内容是否为“ 正整数(不包含0)或保留两位小数的正数(不包括0)” function isKeepTwoDecimalOrPosInt(num: string) {
return /^(0|[1-9][0-9]*)+(\.\d{2})?$/.test(num); }
五、汉字、英文字母、蒙古名、用户名
用户名、汉字、输入限制、英文字母、蒙古名、用户名
// 用户名校验:验证输入内容是否为“字母或数字” function isUserName(val: string) {
return /^[a-zA-Z0-9]{1,}$/.test(val); } // 汉字校验:验证输入内容是否只是“中文汉字” function isChinese(val: string) {
return /^[\u4e00-\u9fa5]{1,}$/.test(val); } // 限制输入汉字 function isInputChinese(val: string) {
return val.replace(/[\u4e00-\u9fa5]+/g, ""); } // 至少包含一个汉字 校验:验证输入内容是否“至少包含一个汉字” function isChineseAllOf1(val: string) {
return /[\u4e00-\u9fa5]/g.test(val); } // 英文(大小写都可以)校验:验证输入内容是否为“ 英文字母(包含大写或小写)” function isEnglish(val: string) {
return /^[a-zA-Z]{1,}$/.test(val); } // 大写英文字母校验:验证输入内容是否只是“大写英文字母” function isEnglishB(val: string) {
return /^[A-Z]{1,}$/.test(val); } // 小写英文字母校验:验证输入内容是否只是“小写英文字母” function isEnglishS(val: string) {
return /^[a-z]{1,}$/.test(val); } // 蒙古人姓名(重点是·)校验:只能输入1-20位汉字和“·”,且不能以“·”开头 function isMgrName(val: string) {
return /^([\u4e00-\u9fa5]*)|([\u4e00-\u9fa5][\u4e00-\u9fa5·]*){1,20}$/g.test(val); }
六、密码、特殊字符
// 密码校验:验证输入内容是否为“6到20位数字+字母的组合(至少包含1个字母和1个数字)” function isPsw(val: string) {
return /^(?!([a-zA-Z]+|\d+)$)[a-zA-Z\d]{6,20}$/.test(val); } // 密码校验:验证输入内容是否为“6-20位字母或数字” function isPassWord(val: string) {
return /^[a-zA-Z\d]{6,20}$/.test(val); } // 密码校验:验证输入内容是否为“6到20位数字+字母的组合,且包含至少1个大写字母、1个小写字母、1个数字” function isPaw(val: string) {
return /^(?=.*?[a-zA-Z])(?=.*?[0-9])(?=.*?[_\-@&=])[a-zA-Z0-9_\-@&=]{6,20}$/.test(val); } // 特殊字符校验:验证输入内容是否为“6-20位特殊字符” function isSpecial(val: string) {
return /^[`~!@#$%^&*()_\-+=<>?:"{}|,/;'\\[\]~!@#¥%……&*()——+={}?:“”【】、;‘’,。、]{6,20}$/.test( val ); } // 特殊字符输入限制:禁止输入“特殊字符(包括限制字母)”,即只能输入汉字和数字 function isInputForbidColl(val: string) {
return val .replace( /[`~!@#$%^&*()_\-+=<>?:"{}|,/;'\\[\]~!@#¥%……&*()——+={}?:“”【】、;‘’,。、abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]/g, "" ) .replace(/\s/g, ""); } // 特殊字符输入限制:禁止输入“特殊字符(包括限制字母、数字)”,即只能输入汉字 function isInputOnlyChinese(val: string) {
return val .replace( /[`~!@#$%^&*()_\-+=<>?:"{}|,/;'\\[\]~!@#¥%……&*()——+={}?:“”【】、;‘’,。、abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0]/g, "" ) .replace(/\s/g, ""); } // 特殊字符输入限制:禁止输入“特殊字符(不限制字母)” function isInputForbidType(val: string) {
return val .replace( /[`~!@#$%^&*()_\-+=<>?:"{}|,/;'\\[\]~!@#¥%……&*()——+={}?:“”【】、;‘’,。、]/g, "" ) .replace(/\s/g, ""); } // 数字\大小写字母\下划线 校验:验证输入内容是否为“数字 or 大小写字母 or 下划线” function isSpe(val: string) {
return /^\w+$/.test(val); }
七、空值
// 空值 校验:验证输入内容是否为“null、undefined、''(若是,则验证通过)” function isEmpty(val: null | undefined | "") {
return val === null || val === undefined || val === ""; }
八、网址
// 网址校验:验证输入内容是否为“协议名为http/https/ftp的完整格式网址” // val 匹配内容、isProtocol 协议名是否必填 function isWeb(val: string, isProtocol: boolean) {
if (isProtocol) {
var strRegex = "^((https|http|ftp|rtsp|mms|ldap|file|news)://){1}" + // 协议名必填 "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" + //ftp的user@ "(([0-9]{1,3}.){3}[0-9]{1,3}" + // IP形式的URL- 199.194.52.184 "|" + // 允许IP和DOMAIN(域名) "([0-9a-z_!~*'()-]+.)*" + // 域名- www. "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." + // 二级域名 "[a-z]{2,6})" + // 一级域名- .com or .museum "(:[0-9]{1,4})?" + // 端口- :80 "((/?)|" + // 如果没有文件名,则不需要斜杠 "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"; var re = new RegExp(strRegex); return re.test(val); } else {
var strRegex = "^((https|http|ftp|rtsp|mms|ldap|file|news)?://)" + // 协议名可填可不填 "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" + //ftp的user@ "(([0-9]{1,3}.){3}[0-9]{1,3}" + // IP形式的URL- 199.194.52.184 "|" + // 允许IP和DOMAIN(域名) "([0-9a-z_!~*'()-]+.)*" + // 域名- www. "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." + // 二级域名 "[a-z]{2,6})" + // 一级域名- .com or .museum "(:[0-9]{1,4})?" + // 端口- :80 "((/?)|" + // 如果没有文件名,则不需要斜杠 "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"; var re = new RegExp(strRegex); return re.test(val); } }
九、IP
// ip输入校验的验证 只允许输入小数点和数字 function isIp(value: string) {
return value.replace(/[^0-9.]/g, ""); }
十、其他
// 输入浮点数后两位限制 function isFloatNumber(val: string) {
if (val === "0。") {
return "0."; } if (parseFloat(val) === 0 && val !== "0.") {
return 0; } const a = val.replace(/[^0-9.]/g, "").split("."); if (a.length >= 2) {
if (a[1].length > 0) {
return a[0] + "." + a[1][0]; } else {
return a[0] + "."; } } return a[0]; } // 替换两位数限制的数字 function isInputNumber(value: string) {
if (parseInt(value) === 0 || !parseInt(value)) {
return ""; } const numStr = "" + value; const num = numStr.substring(0, 2); return num.replace(/[^0-9]/g, ""); } // 限制输入:只能输入非负数(包含小数-小数点后2位)d{0,2}为限制小数点的位数,2代表小数点后2位。 function isInputKeepTwoDecimal(val: string) {
return val.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, "$1"); } // 密码必须含有大写字母、小写字母、数字、特殊字符 function complexPassword(val: string) {
return /^(?=.*?[a-z)(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[`~!@#$%^&*()_\-+=<>?:"{}|,/;'\\[\]~!@#¥%……&*()——+={}?:“”【】、;‘’,。、])[a-zA-Z0-9_\`~!@#$%^&*()_\-+=<>?:"{}|,/;'\\[\]~!@#¥%……&*()——+={}?:“”【】、;‘’,。、]{6,20}$/.test( val ); }
欢迎补充、指正~
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/113553.html