Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-IBAN验证。检查德国或奥地利的IBAN_Javascript_Validation_Iban - Fatal编程技术网

Javascript-IBAN验证。检查德国或奥地利的IBAN

Javascript-IBAN验证。检查德国或奥地利的IBAN,javascript,validation,iban,Javascript,Validation,Iban,我想验证一个德国人或奥地利人的iban ['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))) {

我想验证一个德国人或奥地利人的iban

['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);

        }],
['validate-IBAN','请输入有效的IBAN',函数(v){
var pass=v.strip();
if(0==传递长度){
返回true;
}
如果(!(/[AT | | DE]\w{2}/i.test(v))| |!(/[0-9]\w{18 | | 20}/.test(v))){
返回false;
}
返回!(通过长度<20);
}],
我想查一下像DE19 1234 1234 1234 1234 12(两个字母和20个数字)或 奥地利伊班语,如AT6119043002345732201(2个字母和18个数字)

但它不起作用。怎么了


非常感谢(-:

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

您需要:

  • 首先删除所有空格
  • 检查regex
    /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;
},
isValid:函数(x){
如果(x.length<5)返回false;
如果(!x.match(/[A-Z]{2}[0-9]{2}[A-Z0-9]+/)返回false;
var ASCII_0=“0”。charCodeAt(0);
var ASCII_A=“A”.charCodeAt(0);
var acc=0;
函数添加(n){
如果(acc>1000000)acc%=97;
acc=n