下面是详细的攻略:
一、什么是正则表达式
正则表达式是用来匹配字符串中字符组合的模式。JavaScript中使用RegExp对象来表示正则表达式。
正则表达式由两部分组成:模式和标志。
模式是用来描述待匹配字符组合的模板,模板中可以包含字符、数字、特殊字符以及一些预定义字符集等等,详情可参考常用的预定义字符集。
标志用于指定查找模式的选项,包括i(不区分大小写)、g(全局匹配)和m(多行匹配)等。
二、JavaScript正则表达式验证身份证号码是否合法
JavaScript中可以使用正则表达式来验证身份证号码是否合法。下面分别介绍两种验证身份证号码的方法。
1.方法一
方法一是直接使用正则表达式来验证身份证号码。
下面是示例代码:
function validateIdCard(idCard) {
var reg = /(^\d{15}$)|(^\d{17}([0-9]|X)$)/;
if (reg.test(idCard) === false) {
return false;
} else {
return true;
}
}
上述代码中创建了一个正则表达式/(^\d{15}$)|(^\d{17}([0-9]|X)$)/
,其含义如下:
(^\d{15}$)
表示匹配15位数字;|(^\d{17}([0-9]|X)$)
表示或者匹配17位数字或大写字母“X”。
在调用该函数时,参数idCard为待验证的身份证号码字符串。该函数返回布尔值,如果身份证号码不合法则返回false,否则返回true。
2.方法二
方法二是使用身份证号码的校验规则来验证身份证号码。
下面是示例代码:
function validateIdCard(idCard) {
// 加权因子
var weightedFactors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
// 校验码
var checkCodes = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];
// 待验证号码的长度和校验位数
var idCardLength = idCard.length;
var checkBit = idCard.substr(idCardLength - 1, 1); // 校验位
// 如果输入的身份证号码不合法,就直接返回false
if (idCardLength != 18 || isNaN(parseInt(checkBit))) {
return false;
}
// 计算校验位
var sum = 0;
for (var i = 0; i < idCardLength - 1; i++) {
var num = parseInt(idCard.substr(i, 1));
sum += num * weightedFactors[i];
}
var mod = sum % 11;
var checkCode = checkCodes[mod];
// 验证校验位
if (checkBit.toUpperCase() != checkCode) {
return false;
} else {
return true;
}
}
上述代码中,首先定义了加权因子weightedFactors
和校验码checkCodes
。然后根据待验证号码的长度和校验位数,判断该号码是否合法。接着计算校验位并验证其正确性,最后返回布尔值。
三、示例说明
下面是两个示例,分别使用上述两种验证方法来验证身份证号码是否合法。
示例一
var idCard = "610422198903011234";
if (validateIdCard(idCard)) {
console.log(idCard + " is valid.");
} else {
console.log(idCard + " is invalid.");
}
输出结果为:610422198903011234 is valid.
,说明该身份证号码是合法的。
示例二
var idCard = "61042219890301123X";
if (validateIdCard(idCard)) {
console.log(idCard + " is valid.");
} else {
console.log(idCard + " is invalid.");
}
输出结果为:61042219890301123X is valid.
,说明该身份证号码是合法的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript正则表达式验证身份证号码是否合法(两种方法) - Python技术站