idcard-parse-utils
Version:
232 lines (168 loc) • 4.79 kB
Markdown
# idcard-parse-utils
一个用于校验中国身份证号码的 JavaScript 库,支持 18 位和 15 位身份证号码的校验。
## 特性
- ✅ 支持 18 位和 15 位身份证号码校验
- ✅ 校验省份编码的合法性
- ✅ 校验出生日期的合理性
- ✅ 校验 18 位身份证号码的校验位
- ✅ 支持 CommonJS 和 ES Module 两种模块格式
- ✅ 支持 TypeScript 类型定义
- ✅ 无依赖,体积小巧
## 安装
```bash
npm install idcard-parse-utils
```
或者使用 yarn:
```bash
yarn add idcard-parse-utils
```
或者使用 pnpm:
```bash
pnpm add idcard-parse-utils
```
## 使用方法
### ES Module
```javascript
import { checkPsidno } from "idcard-parse-utils";
// 校验18位身份证号
const result1 = checkPsidno("110101199001011234");
console.log(result1); // true 或 false
// 校验15位身份证号
const result2 = checkPsidno("110101900101123");
console.log(result2); // true 或 false
```
### TypeScript
```typescript
import { checkPsidno } from "idcard-parse-utils";
// 类型安全的身份证号校验
const result1: boolean = checkPsidno("110101199001011234");
const result2: boolean = checkPsidno(110101199001011234);
// TypeScript 会提供完整的类型检查和智能提示
console.log(result1); // boolean
console.log(result2); // boolean
```
### CommonJS
```javascript
const { checkPsidno } = require("idcard-parse-utils");
// 校验身份证号
const result = checkPsidno("110101199001011234");
console.log(result); // true 或 false
```
### 在浏览器中使用
```html
<script src="https://unpkg.com/idcard-parse-utils/dist/index.umd.js"></script>
<script>
const result = idCardParse.checkPsidno("110101199001011234");
console.log(result);
</script>
```
## API 文档
### checkPsidno(value)
校验身份证号码是否合规。
**参数:**
- `value` (String|Number): 需要校验的身份证号码
**返回值:**
- `Boolean`: 返回 `true` 表示身份证号码合规,返回 `false` 表示不合规
**示例:**
```javascript
import { checkPsidno } from "idcard-parse-utils";
// 有效的身份证号码
console.log(checkPsidno("110101199001011234")); // 根据实际校验结果
// 无效的身份证号码
console.log(checkPsidno("123456789012345678")); // false
console.log(checkPsidno("11010119900101123")); // false (格式错误)
console.log(checkPsidno("991101199001011234")); // false (省份编码错误)
```
## 校验规则
该库会对身份证号码进行以下校验:
### 1. 格式校验
- 18 位身份证号码:前 17 位为数字,第 18 位为数字或 X
- 15 位身份证号码:全部为数字
### 2. 省份编码校验
支持的省份编码包括:
- 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: 澳门
- 91: 国外
### 3. 出生日期校验
- 出生日期不能是未来时间
- 年龄不能超过 150 岁
- 月份必须在 1-12 之间
- 日期必须符合该月的实际天数
### 4. 校验位校验(仅 18 位)
对 18 位身份证号码,会根据前 17 位计算校验位,并与第 18 位进行比对。
## 使用示例
```javascript
import { checkPsidno } from "idcard-parse-utils";
// 用户注册时校验身份证号
function validateUser(userInfo) {
const { idCard } = userInfo;
if (!checkPsidno(idCard)) {
throw new Error("身份证号码格式不正确");
}
// 继续其他验证逻辑...
}
// 表单验证
function validateForm() {
const idCardInput = document.getElementById("idCard");
const idCard = idCardInput.value.trim();
if (!checkPsidno(idCard)) {
alert("请输入正确的身份证号码");
return false;
}
return true;
}
// 批量校验
const idCards = ["110101199001011234", "110101900101123", "123456789012345678"];
idCards.forEach((idCard) => {
console.log(`${idCard}: ${checkPsidno(idCard) ? "有效" : "无效"}`);
});
```
## 构建和开发
```bash
# 安装依赖
pnpm install
# 构建项目
pnpm build
# 清理构建文件
pnpm clean
```
### v1.0.0
- 初始版本
- 支持 18 位和 15 位身份证号码校验
- 支持省份编码校验
- 支持出生日期合理性校验
- 支持 18 位身份证校验位校验
## 声明
- 抄的