嗨,我需要做一个IBAN验证检查使用javascript
。IBAN验证检查
我需要遵循的规则是
验证IBAN 的IBAN通过将其转换成一个整数,执行基本MOD-97操作它(如ISO 7064中所述)进行验证。如果IBAN有效,则余数等于 1.
。检查IBAN的总长度是否正确。如果不是,则IBAN无效
.Move四个初始字符的字符串
.Replace串中的每个字母有两个数字,的端部从而扩大字符串,其中A = 10,B = 11,...,Z = 35
.Interpret字符串为十进制整数,并通过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;
}
此代码不能验证摩尔多瓦IBAN。例如'MD75EX0900002374642125EU'。根据www.iban.com它是有效的 – armen
谢谢@armen。问题打开(https://github.com/arhs/iban.js/issues/23)将尽快修复。 –
非常好@Laurent VB,有没有任何邮件列表来通知我这种修复后? – armen