推荐答案
// www.javascriptcn.com code example
function validateEmail(email) {
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
return emailRegex.test(email);
}
function validateMobile(mobile) {
const mobileRegex = /^1[3456789]\d{9}$/;
return mobileRegex.test(mobile);
}
function validateIdCard(idCard) {
const idCardRegex = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/;
if (!idCardRegex.test(idCard)) {
return false;
}
const factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
const parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
let sum = 0;
for (let i = 0; i < 17; i++) {
sum += parseInt(idCard[i]) * factor[i];
}
let mod = sum % 11;
return parity[mod] === String(idCard[17]).toUpperCase();
}
// 示例
console.log("Email validation:", validateEmail("test@example.com")); // true
console.log("Email validation:", validateEmail("invalid-email")); // false
console.log("Mobile validation:", validateMobile("13800138000")); // true
console.log("Mobile validation:", validateMobile("12345678901")); // false
console.log("ID Card validation:", validateIdCard("440106199001012345")); // true
console.log("ID Card validation:", validateIdCard("44010619900101234x")); // true
console.log("ID Card validation:", validateIdCard("440106199001012341")); // false本题详细解读
邮箱格式验证
邮箱验证的正则表达式通常比较复杂,这里提供一个常用的版本:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$。
^: 匹配字符串的开始。[a-zA-Z0-9._%+-]+: 匹配一个或多个字母(不区分大小写)、数字、.、_、%、+、-。这部分代表邮箱用户名。@: 匹配@符号。[a-zA-Z0-9.-]+: 匹配一个或多个字母(不区分大小写)、数字、.、-。这部分代表域名。\.: 匹配.符号(需要转义)。[a-zA-Z]{2,}: 匹配至少两个字母(不区分大小写)。这部分代表顶级域名,如.com,.net,.org等。$: 匹配字符串的结尾。
手机号码格式验证
中国大陆手机号码的验证通常使用 ^1[3456789]\d{9}$ 这个正则表达式。
^1: 匹配以数字1开头。[3456789]: 匹配第二位数字,通常为3,4,5,6,7,8,9。\d{9}: 匹配任意9个数字。$: 匹配字符串的结尾。
身份证号码格式验证
中国大陆身份证号码由18位数字或字符组成,前17位为数字,最后一位可能是数字或X。身份证验证比较复杂,不仅需要校验格式,还需要校验校验码。
^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$:^[1-9]\d{5}: 匹配前6位区域码,第一位不能为0;(18|19|20)\d{2}:匹配年份,限定为 18xx,19xx,20xx;(0[1-9]|1[0-2]):匹配月份,01-12;(0[1-9]|[12]\d|3[01]):匹配日期,01-31;\d{3}:匹配顺序码,3位数字;[\dXx]$:匹配最后一位校验码,可以为数字或 X(或 x)。
- 校验码计算:身份证号码前17位乘以相应的加权因子,然后求和,再除以11取模,根据模值在校验码数组中找到对应的校验码。
- 加权因子数组:
[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] - 校验码数组:
[1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2] - 注意:此处身份证号码的校验,为简化代码,未校验具体省市区划,以及日期是否有效。在实际应用中,应根据实际情况进行校验。