正则表达式将捕获组与SEPA银行编号的量词相结合

时间:2016-02-21 17:03:30

标签: javascript regex

目标: 我正在尝试创建一个更有效的正则表达式,以灵活地捕获SEPA库号以进行表单验证。

背景 SEPA IBAN号码具有以下模式:NL88ABNA1234567890

我的问题与最后的9或10个数字有关,例如0123456789。 我希望允许空格字符和短划线的任意组合,因为数字在提交之前已经消毒,例如: -

  • 0123456789
  • 01-23-45-67-89
  • 01 23 45 67 89
  • 01 - 23 - 45 - 67 - 89
  • 012 345 67 89
  • 等等

我可以通过以下方式实现这一目标: - (\d(?:\s[\s-]\s|[\s-])?\d(?:\s[\s-]\s|[\s-])?\d(?:\s[\s-]\s|[\s-])?\d(?:\s[\s-]\s|[\s-])?\d(?:\s[\s-]\s|[\s-])?\d(?:\s[\s-]\s|[\s-])?\d(?:\s[\s-]\s|[\s-])?\d(?:\s[\s-]\s|[\s-])?\d(?:\s[\s-]\s|[\s-])?\d?)

但它不是很优雅

我尝试将捕获组与量词组合,但它只返回最后一位数: -

(\d(?:\s?[\s-]\s?)?){9,10}

如何更有效地实现这一目标&检查整数不仅仅是最后一位数?

1 个答案:

答案 0 :(得分:1)

您可以将此正则表达式与可选空格和数字后面的连字符一起使用:

/((?:\d[\s-]*){9,10})/

[\s-]*将在每个数字后允许0个或更多空格和连字符。

RegEx Demo