我需要使用 JavaScript 进行 IBAN 验证检查。我需要遵循的规则是:
验证 IBAN 通过将其转换为整数并对其执行基本的 mod-97 操作(如 ISO 7064 中所述)来验证 IBAN。如果 IBAN 有效,则余数等于 1。
根据国家/地区检查 IBAN 总长度是否正确。如果不是,则 IBAN 无效
将四个初始字符移动到字符串的末尾
将字符串中的每个字母替换为两位数字,从而扩展字符串,其中 A = 10, B = 11, ..., Z = 35
将字符串解释为十进制整数并计算该数字除以 97 的余数
我正在为白俄罗斯的 IBAN 执行此操作,因此它必须遵循以下格式
2C 31N -
RU12300000000000000000000000000000
如何修改以下内容以满足上述规则;
function validateIBAN(iban) {
var newIban = iban.toUpperCase(),
modulo = function(divident, divisor) {
var cDivident = '';
var cRest = '';
for (var i in divident) {
var cChar = divident[i];
var cOperator = cRest + '' + cDivident + '' + cChar;
if (cOperator < parseInt(divisor)) {
cDivident += '' + cChar;
} else {
cRest = cOperator % divisor;
if (cRest == 0) {
cRest = '';
}
cDivident = '';
}
}
cRest += '' + cDivident;
if (cRest == '') {
cRest = 0;
}
return cRest;
};
if (newIban.search(/^[A-Z]{2}/gi) < 0) {
return false;
}
newIban = newIban.substring(4) + newIban.substring(0, 4);
newIban = newIban.replace(/[A-Z]/g, function(match) {
return match.charCodeAt(0) - 55;
});
return parseInt(modulo(newIban, 97), 10) === 1;
}
console.log(validateIBAN("RU1230000000000000000000000000000"));