// 统一社会信用代码 checkSocialCardNumber(value) { //https://www.lmlphp.com/user/57840/article/item/2658937/ if (value == "") { return false; } else { var firstarray = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", ]; var firstkeys = [3, 7, 9, 10, 5, 8, 4, 2]; var secondarray = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "T", "U", "W", "X", "Y", ]; var secondkeys = [ 1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28, ]; function calc(code, array1, array2, b) { var count = 0; for (var i = 0; i < array2.length; i++) { var a = code[i]; count += array2[i] * array1.indexOf(a); } var remainder = count % b; return remainder === 0 ? 0 : b - remainder; } var code = value.toUpperCase(); if (code.length != 18) { console.log(1); return false; } var reg = /^\w\w\d{6}\w{9}\w$/; if (!reg.test(code)) { console.log(2); return false; } else { /* 登记管理部门代码:使用阿拉伯数字或大写英文字母表示。 机构编制:1 民政:5 工商:9 其他:Y */ let reg1 = /^[1,5,9,Y]\w\d{6}\w{9}\w$/; if (!reg1.test(code)) { console.log(3); return false; } else { /* 机构类别代码:使用阿拉伯数字或大写英文字母表示。 机构编制机关:11打头 机构编制事业单位:12打头 机构编制中央编办直接管理机构编制的群众团体:13打头 机构编制其他:19打头 民政社会团体:51打头 民政民办非企业单位:52打头 民政基金会:53打头 村民委员会:54打头 民政其他:59打头 工商企业:91打头 工商个体工商户:92打头 工商农民专业合作社:93打头 其他:Y1打头 https://www.hftfund.com/contents/2019/10/10-3c400690bdb34720a22ad68e22956601.html */ let reg2 = /^(11|12|13|19|21|31|32|33|34|35|41|51|52|53|54|55|61|62|59|71|72|81|91|92|93|A1|G1|J1|N1|N2|N3|Y1)\d{6}\w{9}\w$/; if (!reg2.test(code)) { console.log(4); return false; } else { /* 登记管理机关行政区划码:只能使用阿拉伯数字表示。按照GB/T 2260编码。 例如:四川省成都市本级就是510100;四川省自贡市自流井区就是510302。 */ let reg3 = /^(11|12|13|19|21|31|32|33|34|35|41|51|52|53|54|55|61|62|59|71|72|81|91|92|93|A1|G1|J1|N1|N2|N3|Y1)\d{6}\w{9}\w$/; if (!reg3.test(code)) { console.log(5); return false; } else { var firstkey = calc(code.substr(8), firstarray, firstkeys, 11); var firstword; if (firstkey < 10) { firstword = firstkey; } if (firstkey == 10) { firstword = "X"; } else if (firstkey == 11) { firstword = "0"; } if (firstword != code.substr(16, 1)) { console.log(6); return false; }else { var secondkey = calc(code, secondarray, secondkeys, 31); var secondword = secondarray[secondkey]; if (!secondword || secondword != code.substr(17, 1)) { console.log(7); return false; }else { var word = code.substr(0, 16) + firstword + secondword; if (code != word) { console.log(8); return false; }else { console.log(9); return true } } } } } } } } },
统一社会信用代码正则校验
最新推荐文章于 2023-10-19 16:34:16 发布