以下是统一社会信用代码的JavaScript正则表达式校验代码:

function isValidUnifiedSocialCreditCode(code) {
  // 统一社会信用代码正则表达式
  const regex = /^[0-9ABCDEFGHJKLMNPQRTUWXY]{2}[0-9]{6}[0-9ABCDEFGHJKLMNPQRTUWXY]{10}$/;

  if (!regex.test(code)) {
    return false;
  }

  // 统一社会信用代码校验码计算规则
  const weights = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];
  const chars = "0123456789ABCDEFGHJKLMNPQRTUWXY";
  let sum = 0;
  for (let i = 0; i < code.length - 1; i++) {
    const c = code.charAt(i);
    const index = chars.indexOf(c);
    sum += index * weights[i];
  }
  const mod = sum % 31;
  const checkCode = chars.charAt(31 - mod);

  return checkCode === code.charAt(code.length - 1);
}

使用示例:

console.log(isValidUnifiedSocialCreditCode("91310115MA1GJQDG0D"));  // true
console.log(isValidUnifiedSocialCreditCode("91310115MA1GJQDG0E"));  // false
``

原文地址: https://www.cveoy.top/t/topic/gc3a 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录