Javascript IBAN Validation.检查德语或奥地利 IBAN

Javascript IBAN Validation. Check german or austrian IBAN

本文关键字:IBAN 奥地利 德语 检查 Validation Javascript      更新时间:2023-09-26

我想验证德国人或奥地利伊班人。

['validate-IBAN', 'Please enter a valid IBAN.', function (v) {
     var pass=v.strip();
     if (0 == pass.length) {
         return true;
     }
     if (!(/[AT || DE]'w{2}/i.test(v)) || !(/[0-9]'w{18 || 20}/.test(v))) {
         return false;
     }
     return !(pass.length < 20);
        }],

我想检查德语 IBAN,例如 DE19 1234 1234 1234 1234 12(两个字母和 20 个数字(或奥地利 IBAN 喜欢AT6119043002345732201(2 个字母和 18 个数字(

但它不起作用。怎么了?

非常感谢(-:

你发明了一种新的正则表达式语法,但你忘了告诉Javascript维护者来实现它。没有比[AT || DE]'w{18 || 20}.

您需要:

  • 首先删除所有空格
  • 检查正则表达式/DE'd{20}|AT'd{18}/
  • 检查总和

我想,检查总和是最重要的部分,因为它可以防止用户错误地输入废话。

如注释中所述,有一个现成的脚本可用于此。但是,我发现它太复杂了,因为它们可以防止太不可能的错误(具有错误结构但校验和正确的 IBAN(。我只是自己写了一个简单的函数

isValid: function(x) {
    if (x.length < 5) return false;
    if (!x.match(/[A-Z]{2}[0-9]{2}[A-Z0-9]+/)) return false;
    var ASCII_0 = "0".charCodeAt(0);
    var ASCII_A = "A".charCodeAt(0);
    var acc = 0;
    function add(n) {
        if (acc > 1000000) acc %= 97;
        acc = n < ASCII_A ? 10 * acc + n - ASCII_0 
            : 100 * acc + n - ASCII_A + 10;
    }
    for (var i=4; i<x.length; ++i) add(x.charCodeAt(i));
    for (var i=0; i<4; ++i) add(x.charCodeAt(i));
    acc %= 97;
    return acc == 1;
},