身份证号码解析校验工具
```toml
[dependencies] idcard = "0.1"
```
```rust
use idcard::Identity;
let id = Identity::new("632123820927051");
// 18位号码 id.number(); // 性别 id.gender(); // 计算年龄 id.age(); // 出生年份 id.year(); // 出生月份 id.month(); // 出生日期 id.date(); // 出生年月日(格式:yyyy-mm-dd) id.birthdate(); // 天干地支 id.chineseera(); // 生肖 id.chinesezodiac(); // 星座 id.constellation(); // 省份 id.province(); // 号码归属地 id.region(); // 判断号码是否有效 id.isvalid(); // 判断号码是否为空 id.is_empty(); // 号码长度 id.len();
```
```rust
use idcard::{hk, mo, tw};
// 香港身份证校验 hk::validate("G123456(A)");
// 澳门身份证校验 mo::validate("1123456(0)");
// 台湾身份证校验 tw::validate("A123456789");
tw::gender("A123456789"); tw::region("A123456789");
```
```rust
use idcard::region;
// 查询归属地名称 region::query("632123");
```
```rust
// 15位升18位 idcard::upgrade("632123820927051");
// 15/18位号码校验 idcard::validate("632123820927051");
// 生成假身份证号码 idcard::new_fake("654325", 2018, 2, 28, Gender::Male);
// 随机生成假身份证号码 idcard::rand_fake();
// 根据参数随机生成假身份证号码 let mut opts = FakeOptions::default(); opts.setregion("3301"); opts.setgender(Gender::Female); opts.setminyear(1990); opts.setmaxyear(2000); idcard::randfakewith_opts(&opts);
```
部分算法代码参考于网络
MIT