Привет, мне нужно выполнить проверку достоверности IBAN с помощью javascript
.
Правила, которым я должен следовать, - это
Проверка IBAN IBAN проверяется путем преобразования его в целое число и выполнения базовой операции mod-97 (как описано в ISO 7064). Если IBAN действителен, остаток равен 1.
1. Проверьте, что общая длина IBAN соответствует правилу страны. Если нет, IBAN недействителен
2. Переместите четыре начальных символа в конец строки
3. Запишите каждую букву в строке двумя цифрами, тем самым расширяя строку, где A = 10, B = 11,..., Z = 35
4. Попробуйте строку в виде десятичного целого и вычислите остаток этого числа при делении на 97
Я делаю это для белорусского IBAN, поэтому он должен следовать следующему формату
2C 31N -
RU1230000000000000000000000000000
Как мне изменить следующее, чтобы соответствовать вышеуказанным правилам?
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;
}