以下是对中国大陆身份证、港澳身份证、台湾身份证、护照、军官证和户口本的校验规则的整理和解释:
### 1. 中国大陆身份证校验规则
**正则表达式:**
```javascript
/^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/;
```
**校验逻辑:**
1. **格式校验**:使用正则表达式校验身份证号码的基本格式。
2. **区位码校验**:前6位为地址码,校验省份、城市、区县。
3. **出生日期校验**:确保出生日期合法且不超过当前日期。
4. **校验码校验**:根据身份证号码的前17位计算校验码,并与第18位进行比对。
**返回值:**
- `{ 'status': 1, 'msg': '校验通过' }`:校验通过。
- `{ 'status': 0, 'msg': '身份证号码不合规' }`:校验不通过。
---
### 2. 港澳身份证校验规则
**正则表达式:**
```javascript
/^([A-Z]\d{6,10}(\(\w{1}\))?)$/;
```
**校验逻辑:**
- 港澳居民来往内地通行证号码以字母开头,后跟6到10位数字,可能包含括号内的一个字母。
**返回值:**
- `{ 'status': 1, 'msg': '校验通过' }`:校验通过。
- `{ 'status': 0, 'msg': '港澳居民来往内地通行证号码不合规' }`:校验不通过。
---
### 3. 台湾身份证校验规则
**正则表达式:**
```javascript
/^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/;
```
**校验逻辑:**
- 台湾居民来往大陆通行证号码可以是8位数字、10位数字+字母,或18位数字。
**返回值:**
- `{ 'status': 1, 'msg': '校验通过' }`:校验通过。
- `{ 'status': 0, 'msg': '台湾居民来往大陆通行证号码不合规' }`:校验不通过。
---
### 4. 护照校验规则
**正则表达式:**
```javascript
/^([a-zA-z]|[0-9]){5,17}$/;
```
**校验逻辑:**
- 护照号码长度为5到17位,可以是字母或数字。
**返回值:**
- `{ 'status': 1, 'msg': '校验通过' }`:校验通过。
- `{ 'status': 0, 'msg': '护照号码不合规' }`:校验不通过。
---
### 5. 军官证校验规则
**正则表达式:**
```javascript
/^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/;
```
**校验逻辑:**
- 军官证号码以中文开头,后跟“字第”,然后是4到8位字母或数字,最后可能跟“号”。
**返回值:**
- `{ 'status': 1, 'msg': '校验通过' }`:校验通过。
- `{ 'status': 0, 'msg': '军官证号不合规' }`:校验不通过。
---
### 6. 户口本校验规则
**正则表达式:**
```javascript
/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
```
**校验逻辑:**
- 户口本号码可以是15位数字、18位数字,或17位数字加一个字母X。
**返回值:**
- `{ 'status': 1, 'msg': '校验通过' }`:校验通过。
- `{ 'status': 0, 'msg': '户口本号码不合规' }`:校验不通过。
---
### 总结
以上规则涵盖了常见的身份证件类型,包括中国大陆身份证、港澳身份证、台湾身份证、护照、军官证和户口本。每个规则都通过正则表达式进行格式校验,并根据具体情况进行额外的逻辑校验(如出生日期、校验码等)。