荷兰银行账户验证规则

时间:2011-08-10 13:16:09

标签: javascript html

有人可以告诉我如何为荷兰银行账户制定验证规则吗?

到目前为止,我只能在网上找到这个:

regex = /[0-9]{2}[\\s]{1}[0-9]{2}[\\s]{1}[0-9]{2}[\\s]{1}[0-9]{3}/;

这是我的JavaScript:

function dutchBankAccount(input) {
var regex = /[0-9]{2}[\\s]{1}[0-9]{2}[\\s]{1}[0-9]{2}[\\s]{1}[0-9]{3}/;
if(input.value.toString().match(regex) && !(input.value == "")) {
    return true;
} else {
    input.click();
    input.style.border = '2px solid #F20056';
    return false;
}

}

这是我的HTML代码:

<li><input type="text" id="anum" placeholder="Account Number" autocomplete="off" onkeypress="return isNumberKey(event)" onBlur="isValidAnum()" onFocus="emptyAnum('anum')"/></li>

稍后当我进入荷兰银行账户时,我得到的错误是我不应该得到的。所以如果你知道如何解决这个问题,请帮助我。

1 个答案:

答案 0 :(得分:1)

正则表达式语法不正确。尝试更像这样的东西:

var regex = /[0-9]{2}\s[0-9]{2}\s[0-9]{2}\s[0-9]{3}/;

匹配

之类的字符串
32 01 28 192

两位数后跟一个空格三次,然后是三位数。这是不是所有的荷兰银行帐户看起来像我不知道,虽然这似乎是一个像这样的小名称空间。

(我认为/(?:\d{2}\s){3}\d{3}/应该匹配相同的字符串并且它会更短。)

编辑 - 详细说明,原始代码中的正则表达式存在一些问题:

  • 每个“\ s”(空格)字符前面的反面加倍,但不应该。 (假设荷兰银行账号实际上看起来不像“92 \ s31 \ 28s \ 120”)
  • 将单个字符类快捷方式(“\ s”)放在方括号中是不必要的冗余
  • 使用“{1}”后缀正则表达式元素也是不必要的冗余

真正的问题是额外的反斜杠。另外,说到不必要的冗余,就不需要在输入元素“value”属性的值上调用“.toString()”,如果匹配了该值,则无需确保该值不是空字符串。图案。在这种情况下,空字符串与模式不匹配,因此不需要进行测试。最后(承诺),如果您只是针对字符串测试正则表达式,RegExp原型上的“.test()”方法会更有效:

if (regex.test(input.value)) { // matched
  // ...
}