js身份证验证正则表达式
时间: 2023-10-30 09:04:29 浏览: 132
当然可以!以下是一个简单的 JavaScript 正则表达式,用于验证身份证号码:
```javascript
function validateIDCard(idCard) {
// 正则表达式模式
var pattern = /^\d{17}(\d|X)$/;
// 匹配验证
return pattern.test(idCard);
}
// 示例用法
var idCard1 = '123456789012345678';
console.log(validateIDCard(idCard1)); // false
var idCard2 = '34052419800101001X';
console.log(validateIDCard(idCard2)); // true
```
这个正则表达式使用了 `\d` 来匹配数字,`{17}` 表示前面的数字必须出现 17 次,`(\d|X)` 表示最后一位可以是数字也可以是大写的字母 "X"。如果传入的身份证号码满足这个正则表达式,那么返回 `true`,否则返回 `false`。
请注意,这只是一个简单的验证方法,并不能保证身份证号码的绝对有效性。在实际应用中,可能需要更复杂的逻辑来验证身份证号码的合法性。
相关问题
前端身份证号码验证正则表达式
### 15/18位身份证号码验证的正则表达式
对于前端身份证号码验证,可以采用如下所示的正则表达式来匹配有效的15位或18位中国居民身份证号码:
#### 15位身份证号码正则表达式
```javascript
var idCard15Pattern = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
```
此模式确保了前两位不为零,并且日期部分符合公历标准[^1]。
#### 18位身份证号码正则表达式
```javascript
var idCard18Pattern = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
```
该模式同样保证了年月日的有效性以及最后一位可能是数字或者是大写的英文字母'X'[ ^1 ]。
为了简化实际应用中的代码编写工作量并提高可读性和维护性,通常会将上述两种情况合并成一个更通用的形式来进行验证:
```javascript
function validateIdCard(idCard){
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|x|X)$)/;
return reg.test(idCard);
}
```
这段函数能够处理三种不同形式的身份证明文件编号——即旧版15位编码、新版无校验码的18位编码以及带有字母结尾的新版18位编码。
js身份证正则表达式
以下是一个简单的 JavaScript 函数,使用正则表达式来验证身份证号码的格式是否正确:
```javascript
function isValidIDCard(idCard) {
// 身份证正则表达式
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
return reg.test(idCard);}
```
上述代码仅仅是验证了身份证号码的格式是否正确,而并没有验证身份证号码本身是否合法。如果需要验证身份证号码的合法性,可以使用第三方库或者在线服务。
如果需要使用正则表达式判断当前身份证号是否是22岁,可以先获取当前日期,然后根据身份证号码中的出生日期计算年龄,最后判断是否等于22岁即可。具体代码如下:
```javascript
function is22YearsOld(idCard) {
// 身份证正则表达式
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (!reg.test(idCard)) {
return false;
}
var birthYear = parseInt(idCard.substr(6, 4));
var birthMonth = parseInt(idCard.substr(10, 2));
var birthDay = parseInt(idCard.substr(12,2));
var now = new Date();
var nowYear = now.getFullYear();
var nowMonth = now.getMonth() + 1;
var nowDay = now.getDate();
var age = nowYear - birthYear;
if (nowMonth < birthMonth || (nowMonth == birthMonth && nowDay < birthDay)) {
age--;
}
return age == 22;
}
```
相关问题:
阅读全文
相关推荐















