JS常见简单正则表达式验证功能小结
在Web开发中,我们会经常需要验证用户提交的数据是否符合特定的格式。使用正则表达式是一种很方便的方式,本篇攻略旨在介绍常见的一些正则表达式验证功能。
手机号码验证
function isValidPhoneNumber(phoneNumber) {
const regex = /^1[3-9]\d{9}$/;
return regex.test(phoneNumber);
}
解释:
/^1[3-9]\d{9}$/
是一个正则表达式,其中^
代表开头,$
代表结尾,[3-9]
表示第二位数字只能是3~9中的一个,\d{9}
表示后面必须是9位数字。test()
方法会返回一个布尔值,其返回值为true
表示符合正则表达式规则,返回值为false
表示不符合。
示例:
isValidPhoneNumber('13912345678'); // true
isValidPhoneNumber('12345678900'); // false
地址验证
function isValidAddress(address) {
const regex = /^[\u4e00-\u9fa5]{2,}(省|市|自治区|自治州|县|区)[\u4e00-\u9fa5]{2,}$/;
return regex.test(address);
}
解释:
/^[\u4e00-\u9fa5]{2,}(省|市|自治区|自治州|县|区)[\u4e00-\u9fa5]{2,}$/
是一个正则表达式,其中[\u4e00-\u9fa5]
表示中文字符,{2,}
表示至少需要两个中文字符,(省|市|自治区|自治州|县|区)
表示地址中必须包含省、市、自治区、自治州、县或区中的一个。
示例:
isValidAddress('北京市朝阳区'); // true
isValidAddress('江苏省南京市浦口区'); // true
isValidAddress('上海市'); // false
企业税号验证
function isValidTaxNumber(taxNumber) {
const regex = /^[a-zA-Z0-9]{15,20}$/;
return regex.test(taxNumber);
}
解释:
/^[a-zA-Z0-9]{15,20}$/
是一个正则表达式,其中[a-zA-Z0-9]
表示大小写字母和数字,{15,20}
表示长度在15~20之间。
示例:
isValidTaxNumber('91350100657363579C'); // true
isValidTaxNumber('91350100754866372E0123'); // true
isValidTaxNumber('12345'); // false
金额验证
function isValidAmount(amount) {
const regex = /^\d+(\.\d{1,2})?$/;
return regex.test(amount);
}
解释:
/^\d+(\.\d{1,2})?$/
是一个正则表达式,其中\d
表示数字,+
表示至少出现一次,\.
表示小数点,\d{1,2}
表示小数点后面最多出现两位数字,?
表示小数点及之后的部分可以出现也可以不出现。
示例:
isValidAmount('123.45'); // true
isValidAmount('10000'); // true
isValidAmount('1234.456'); // false
身份证号码验证
function isValidIDCard(idCard) {
const regex = /^[1-6]\d{5}(19|20)\d{2}((0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])|\d{2}(0[1-9]|[1-2]\d|3[0-1]))\d{3}[0-9xX]$/;
const areaCode = {
'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': '澳门'
};
if (!regex.test(idCard)) {
return false;
}
const provinceCode = idCard.substring(0, 2);
if (!areaCode.hasOwnProperty(provinceCode)) {
return false;
}
return true;
}
解释:
/^[1-6]\d{5}(19|20)\d{2}((0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])|\d{2}(0[1-9]|[1-2]\d|3[0-1]))\d{3}[0-9xX]$/
是一个正则表达式,其中,开头的[1-6]
表示身份证号码的第一位必须是1~6中的一个,\d{5}
表示接下来的5位是数字,(19|20)\d{2}
表示出生年份只可能是19或20开头的四位数字,(0[1-9]|1[0-2])
表示月份只可能是01~12中的一个,(0[1-9]|[1-2]\d|3[0-1])
表示日期只可能是01~31中的一个,\d{3}
表示接下来的3位是数字,最后一位可能是0~9
或X
或x
。- 验证身份证号码的时候,还需要根据省份区域码来验证编号的真伪,本例代码中定义了一个
areaCode
对象,保存了身份证号码前两位所代表的省份。
示例:
isValidIDCard('11010119900307001X'); // true
isValidIDCard('11010119900307001234'); // false
isValidIDCard('11110119900307001X'); // false
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】 - Python技术站