javascript - 荷兰银行账户验证规则

标签 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>

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

最佳答案

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

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}/ 应该匹配相同的字符串,而且它更短一些。)

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

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

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

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

关于javascript - 荷兰银行账户验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7011374/

相关文章:

javascript - 启动功能后通过其ID检索正确的图像

javascript函数随机css样式

javascript - Onclick 上的弹出表单错误

javascript - 如果存在不同的类,我如何有条件地将 CSS 应用于类?

php - 无法显示文档文件

html - 如何设置我的设计,使每 3 个控件显示在一行中,每个控件上方都有标签?

javascript - 将确认/取消弹出窗口插入 JQuery - CSS 问题

javascript - 如何获取其他 selectmenu() 的值?

javascript - 如何将数组中的连续整数减少为连字符范围表达式?

javascript - val() 和 text() 的区别