// 校验函数
const checkFunc = (func) => {
return func && (func.constructor === Function);
};
// 验证身份证
export function isIdCard(id) {
const format = /^(([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]$/;
// 号码规则校验
if (!format.test(id)) {
return false;
}
// 区位码校验
// 出生年月日校验 前正则限制起始年份为1900
const year = id.substr(6, 4); // 身份证年
const month = id.substr(10, 2); // 身份证月
const date = id.substr(12, 2); // 身份证日
const time = Date.parse(month + '-' + date + '-' + year); // 身份证日期时间戳date
const nowTime = Date.parse(new Date()); // 当前时间戳
const dates = (new Date(year, month, 0)).getDate(); // 身份证当月天数
if (time > nowTime || date > dates) {
return false;
}
// 校验码判断
const c = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 系数
const b = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; // 校验码对照表
const idArray = id.split('');
let sum = 0;
for (let k = 0; k < 17; k++) {
sum += parseInt(idArray[k]) * parseInt(c[k]);
}
if (idArray[17].toUpperCase() !== b[sum % 11].toUpperCase()) {
return false;
}
return true;
}
// 验证统一社会信用代码
function isCreditCode(credNum) {
let ret = false;
if (credNum.length === 18) {
var reg = /^([0-9ABCDEFGHJKLMNPQRTUWXY]{
2})([0-9]{
6})([0-9A-Z]{
8})([0-9|X]{
1})([0-9ABCDEFGHJKLMNPQRTUWXY]{
1})$/;
if (reg.test(credNum)) {
var str = '0123456789ABCDEFGHJKLMNPQRTUWXY';
var ws = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];
let sum = 0;
for (let i = 0; i < 17; i++) {
sum += str.indexOf(credNum.charAt(i)) * ws[i];
}
let c18 = 31 - (sum % 31);
if (c18 === 31) {
c18 = '0';
}
if (str.charAt(c18) === credNum.charAt(17)) {
ret = true;
}
}
}
return ret;
}
// 组织机构代码 true为真,false为假
function isOrgCode(orgCode) {
var ret = false;
if (orgCode) {
//为了便于人工识别,应使用一个连接符“-”分隔本体代码与校验码。机读时,连接符省略。
var reg = /^([0-9A-Z]){
8}[0-9|X
常用校验方法
最新推荐文章于 2022-11-21 17:39:21 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)