有人能告诉我如何为荷兰银行帐户制定一个验证规则吗?
到目前为止我只能在网上找到这个:
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>
后来当我进入一个荷兰银行账户时,我得到了一个我不应该得到的错误。如果你知道怎么解决这个问题,请帮帮我。
最佳答案
regex语法不正确。试试这样的方法:
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}/
应该匹配相同的字符串,而且它要短一些。)编辑-详细说明一下,原始代码中的regex有一些问题:
每个“\s”(空格)字符前面的反斜杠是双倍的,但不应该是双倍的。(假设荷兰银行账号实际上看起来不像“92\s31\28s\120”)
将单个字符类快捷方式(“\s”)放在方括号中是不必要的冗余
用“{ 1 }”来填充正则元素也是多余的。
真正的问题是额外的反斜杠。此外,说到不必要的冗余,不需要对输入元素“value”属性的值调用“.toString()”,如果该值与模式匹配,则不需要确保它不是空字符串。在这种情况下,空字符串不能与模式匹配,因此不需要进行测试。最后(保证),如果您只是针对字符串测试regex,那么RegExp原型上的“.test()”方法会更有效一些:
if (regex.test(input.value)) { // matched
// ...
}