中国大陆证件、号码的验证类库,目前包含身份证、增值税发票、工商注册码/统一社会信用代码
目前支持以下版本:.NET40
、.NET Standard 2.0
所有验证均需实现IValidator<out T>
接口,其中泛型T
具备如下约束:必须继承自ValidationResult
且需有无参构造函数,该接口定义了以下规范:
- 随机生成一个符合规则的号码
string GenerateRandomNumber();
- 验证号码是否正确
T Validate(string number);
实际验证会在此接口基础上定义额外的规范约束,且每种证件号码均默认提供ValidatorHelper
类,用于统一验证该类型的证件号码,根据实际调用的IValidator<out T>
实现,返回的ValidationResult
也可能会有所不同,所有Helper
类都提供了AddDefaultValidator
来解决Net Core
下反射生成实例会产生异常问题。
PS:如果验证结果IsValid
为True,那么相应的ValidationResult
会包含该号码可识别的所有信息,以身份证为例,返回结果会包含行政区划(即出生登记地)、出生日期、登记序列号、校验位
默认提供ID15Validator
(15位一代身份证)以及ID18Validator
(18位二代身份证)两种类型的身份证验证,具体使用代码如下:
//一代身份证验证,虽然目前未过期的一代身份证(未办理二代,如果办理了,有效期内的一代也就失效了)的仍然有效,但很多地方使用上已不被承认
valid = new ID15Validator().Validate(idNumber);
//二代身份证验证
valid = new ID18Validator().Validate(idNumber);
IDValidatorHelper.AddDefaultValidator(); //进行默认注册
valid = IDValidatorHelper.Validate(idNumber, ignoreCheckBit: false); //无法确认是哪种身份证时可以通过该类进行验证
默认提供VATCode10Validator
(增值税专用发票、增值税普通发票、货物运输业增值税专用发票)以及VATCode12Validator
(增值税普通发票[卷票]、增值税电子普通发票、区块链发票、增值税电子专用发票)两种长度的增值税发票验证(货物运输业增值税专用发票按国家规定目前已停用),具体使用代码如下:
valid = new VATCode10Validator().Validate(vatCode); //增值税专用发票、增值税普通发票、货物运输业增值税专用发票验证
valid = new VATCode12Validator().Validate(vatCode); //增值税普通发票[卷票]、增值税电子普通发票验证
valid = VATCodeValidatorHelper.Validate(vatCode, minYear: 2012); //无法确认是哪种增值税发票时可以通过该类进行验证
注意VATCode10Validator
返回验证结果为VATCode10ValidationResult
,VATCode12Validator
返回验证结果为VATCode12ValidationResult
,VATCodeValidatorHelper
返回验证结果为VATCodeValidationResult
(实际也可能为VATCode10ValidationResult
或VATCode12ValidationResult
)
默认提供RegistrationNo15Validator
(工商注册码)以及RegistrationNo18Validator
(法人和其他组织统一社会信用代码),具体使用代码如下:
valid = new RegistrationNo15Validator().Validate(code); //工商注册码验证
valid = new RegistrationNo18Validator().Validate(code); //法人和其他组织统一社会信用代码验证
valid = RegistrationNoValidatorHelper.Validate(code, validLimit: null); //无法确认是工商注册码还是法人和其他组织统一社会信用代码时可以通过该类进行验证
注意RegistrationNo15Validator
返回验证结果为RegistrationNo15ValidationResult
,RegistrationNo18Validator
返回验证结果为RegistrationNo18ValidationResult
,RegistrationNoValidatorHelper
返回验证结果为RegistrationNoValidationResult
(实际也可能为RegistrationNo15ValidationResult
或RegistrationNo18ValidationResult
)
2021-04-14
- Release v1.0.3 增加电子专票支持,Helper增加注册方法临时处理Core下反射生成实例失败问题
2019-08-06
- Release v1.0.2 增加区块链电子发票支持
2019-08-05
- Release v1.0.1 增加12位增值税普通发票支持,增加支持增值税电子发票通行费支持
2018-05-09
- Release v1.0.0