英国银行排序代码javascript正则表达式

Nic*_*ckL 8 javascript regex bank

我正在尝试在javascript中为英国银行排序代码创建正则表达式,以便用户可以输入6位数字或6位数字,并在对之间使用连字符.例如"123456"或"12-34-56".也不是所有的数字都可以是0.到目前为止,我已经有了/(?!0{2}(-?0{2}){2})(\d{2}(-\d{2}){2})|(\d{6})/这个jsFiddle来测试.

这是我的第一个正则表达式,所以我不确定我做得对.对6个0位数的测试应该会失败,我认为-?前瞻中的可选连字符会使它与带有连字符的6个0位数相同,但事实并非如此.如果我做错了,我会感激一些帮助和任何批评!

nha*_*tdh 8

只是回答您的问题,您可以通过以下方式验证用户输入:

/^(?!(?:0{6}|00-00-00))(?:\d{6}|\d\d-\d\d-\d\d)$/.test(inputString)
Run Code Online (Sandbox Code Playgroud)

它将严格的形式仅匹配输入XX-XX-XXXXXXXX其中X的数字,将排除 00-00-00,000000与其他任何情况下(例如,沿着XX-XXXXXXXX-XX).

但是,在我看来,正如其他评论中所述,我认为如果强制用户要么总是输入连字符,要么根本不输入连字符,这样做会更好.在处理与金钱有关的任何事情时要特别严格,以后可以节省(未知)麻烦.