正则表达式
前言
在前端开发过程重,会时常应用到正则表达式,对填写数据进行校验判断,一下为一些个人使用到,整理出来的一些正则表达式,希望对各位有用,有空会持续更新完善。
身份证(1代)
身份证号(1代,15位数字)
// 身份证(1代)校验正则
const idCard = /^[1-9]\d{7}(?:0\d|10|11|12)(?:0[1-9]|[1-2][\d]|30|31)\d{3}$/;
身份证(2代)
身份证号(2代,18位数字),最后一位是校验位,可能为数字或字符X
// 身份证(2代)校验正则
const idCard = /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/;
澳门身份证
澳门身份证号码较为独特
// 澳门身份证校验正则
const macauIdCard = /^[1|5|7]\d{6}\(\d\)$/;
台湾身份证
台湾身份证
// 台湾身份证校验正则
const taiwanIdCard = /^[a-zA-Z][0-9]{9}$/;
护照(包含香港、澳门)
护照(包含香港、澳门)户口薄
// 护照校验正则
const passport = /(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)/;
户口薄
户口薄,户口本编号
// 户口薄验正则
const register = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
百分比
百分比最大100%,最多保留两位小数的正则表达式;其中\d{1,2}
修改为\d{1,1}
即为只保留一位小数的正则表达式。
// 百分比校验正则
const percent = /^([0-9]\d{0,1}|100$)(\.\d{1,2})?$/;
年平均温度(气象条件)
年均气温小于60°C,最多保留两位小数,此处为摄氏度。
// 年平均温度校验正则
const t = /^(\d|[1-4]\d|5\d|\d\.\d{1,2}|[1-4]\d\.\d{1,2}|5\d\.\d{1,2})$/;
最多15位数,最大12位整数,且保留两位小数
最多输入15位数字,且最大12位整数,且保留两位小数其中\d{0,12}
修改为12
即为最大多少位整数正则表达式。
// 校验正则
const verify = /^(0|[1-9]\d{0,12})(\.\d{1,2})?$/;
统一社会信用代码
中国国内目前已全部统一使用18位社会信用代码,这里只校验位数。
// 统一社会信用代码校验正则
const unifyCode = /^[0-9A-Z]{18}$/;
统一社会信用代码由18位字符组成,包括数字和大写字母(不适用I、O、Z、S、V),需要满足特定的规则:
- 第一部分(第1位) :登记管理部门代码,使用阿拉伯数字或英文字母表示;
- 第二部分(第2位) :机构类别代码,同样使用阿拉伯数字或英文字母表示;
- 第三部分(第3-8位):登记管理机关行政区划码,使用阿拉伯数字表示;
- 第四部分(第9-17位) :主体标识码(组织机构代码),使用阿拉伯数字或英文字母表示;
- 第五部分(第18位) :校验码,使用阿拉伯数字或英文字母表示。
统一社会信用代码的正则表达式可能包括以下特征:
代码长度固定为18位;
第一部分和第二部分可以是数字或字母;
第三部分是行政区划码,全部由数字组成;
第四部分是主体标识码,可以是数字或字母;
第五部分是校验码,可以是数字或字母。
// 统一社会信用代码校验正则
const unifyCode = /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g;
// 统一社会信用代码校验正则(另一种校验)
const code = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/;
密码校验
密码必须包括大小写、数字、特殊符号@#$%^&*
,且大于等于8位。
// 统一社会信用代码校验正则
const password = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[@#$%^&*]).{8,}$/;
密码强度校验
密码强度校验,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符。
// 密码强度校验正则
const password = /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/;
密码校验,不允许输入连续数字或字母
不支持输入3位以上连续的字母和数字,如:abc / 123。
// 统一社会信用代码校验正则
const value = 'admin@123456';// abc@131415
let arr = value.split('');
for (let i = 1; i < arr.length - 1; i++) {
let firstIndex = arr[i - 1].charCodeAt();
let secondIndex = arr[i].charCodeAt();
let thirdIndex = arr[i + 1].charCodeAt();
thirdIndex - secondIndex == 1;
secondIndex - firstIndex == 1;
if ((thirdIndex - secondIndex === 1) && (secondIndex - firstIndex === 1)) {
// console.warn("不支持输入3位以上重复的数字和字母,如:abc / 123")
return Promise.reject('不支持输入3位以上连续的字母和数字,如:abc / 123');
}
}
车牌号
1、车牌号:新能源+非新能源。
// 车牌号(新能源+非新能源)
const licenseNumber = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/;
2、车牌号:新能源。
// 车牌号(新能源)
const greenNumber= /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](?:((\d{5}[A-HJK])|([A-HJK][A-HJ-NP-Z0-9][0-9]{4}))|[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳])$/;
2、车牌号:非新能源。
// 车牌号(非新能源)
const carNumber= /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]$/;
军官/士兵证
军官/士兵证,校验正则
// 军官/士兵证校验正则
const officer = /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/;
原创不易,喝水莫忘挖井人,谢谢!!!