以下是统一社会信用代码的 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/ot1u 著作权归作者所有。请勿转载和采集!

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