UNPKG

util-helpers

Version:

一个基于业务场景的工具方法库

34 lines (31 loc) 1.18 kB
import { toString } from 'ut2'; var baseReg = /^[\dA-HJ-NPQRTUWXY]{2}\d{6}[\dA-HJ-NPQRTUWXY]{10}$/; var baseCodeArr = '0123456789ABCDEFGHJKLMNPQRTUWXY'.split(''); function sumCheckCode(preCode) { var total = 0; var _loop_1 = function (i) { var index = baseCodeArr.findIndex(function (item) { return item === preCode[i]; }); var wf = Math.pow(3, i) % 31; total += index * wf; }; for (var i = 0; i < 17; i++) { _loop_1(i); } var remainder = total % 31; var checkCodeIndex = remainder !== 0 ? 31 - remainder : 0; return baseCodeArr[checkCodeIndex]; } function isUnifiedIdentifier(value, options) { var valueStr = toString(value); var _a = (options || {}).checkCode, needCheckCode = _a === void 0 ? true : _a; var passBaseRule = baseReg.test(valueStr); if (!needCheckCode || !passBaseRule) { return passBaseRule; } var preCode = valueStr.substring(0, 17); var lastCode = valueStr.substring(valueStr.length - 1); var checkCode = sumCheckCode(preCode); return lastCode === checkCode; } isUnifiedIdentifier.sumCheckCode = sumCheckCode; export { isUnifiedIdentifier as default };