util-helpers
Version:
32 lines (28 loc) • 1.09 kB
JavaScript
;
var ut2 = require('ut2');
var reg = /^[1-9]\d{9,20}$/;
var regLoose = /^\d{8,30}$/;
function sumCheckCode(numStr) {
var numArr = (numStr + '').replace(/\D/g, '').split('').reverse();
var sum = 0;
for (var i = 0; i < numArr.length; i++) {
var currNum = parseInt(numArr[i]);
sum += i % 2 === 0 ? currNum * 2 - (currNum > 4 ? 9 : 0) : currNum;
}
var mod = sum % 10;
return mod !== 0 ? 10 - mod : 0;
}
function isBankCard(value, options) {
if (options === void 0) { options = {}; }
var _a = options.loose, loose = _a === void 0 ? false : _a, _b = options.luhn, luhn = _b === void 0 ? false : _b;
var valueStr = ut2.toString(value);
var validateResult = loose ? regLoose.test(valueStr) : reg.test(valueStr);
if (validateResult && luhn) {
var precode = valueStr.substring(0, valueStr.length - 1);
var checkCode = valueStr[valueStr.length - 1];
return checkCode === String(sumCheckCode(precode));
}
return validateResult;
}
isBankCard.sumCheckCode = sumCheckCode;
module.exports = isBankCard;