IBAN 正则表达式包括空格和破折号

Posted

技术标签:

【中文标题】IBAN 正则表达式包括空格和破折号【英文标题】:IBAN Regex to include spaces and dash 【发布时间】:2017-12-20 01:36:27 【问题描述】:

我正在尝试创建一个允许/注册 IBAN 号码的正则表达式,即使它包含破折号或空格。

前。 希腊 IBAN #

GR1601101250000000012300695

希腊 IBAN 正则表达式

GR\d2\d4\d3\w\w4\w4\w4\w3

我想将这三 (3) 个正则表达式组合成一 (1) 个正则表达式:

GR\d2 \d4 \d3\w \w4 \w4 \w4 \w3(空格)

GR\d2\d4\d3\w\w4\w4\w4\w3(没有 spcaes,没有破折号)

GR\d2-\d4-\d3\w-\w4-\w4-\w4-\w3(破折号)

这可能吗?

任何人都可以提供的任何帮助将不胜感激。 谢谢!

【问题讨论】:

如果这是用于 javascript,Netmage backref 模式也可以工作 but without named capturing group (see demo)。指定正则表达式风格始终很重要。 【参考方案1】:

根据您所使用的语言,您也许可以做一些更复杂的事情,但最简单的方法是使用交替:

GR\d2( \d4 \d3\w \w4 \w4 \w4 \w3|\d7\w16|-\d4-\d3\w-\w4-\w4-\w4-\w3)

例如,使用 Perl 或 C# 风格的正则表达式,您可以记住并引用匹配项:

GR\d2(?<sep>[ -]?)\d4\k<sep>\d3\w\k<sep>\w4\k<sep>\w4\k<sep>\w4\k<sep>\w3

【讨论】:

感谢您的回复! 感谢您的回复!您的正则表达式与“GR1601101250000000012300695”匹配,但不匹配“GR 16 0110 125 0 0000 0001 2300 695”或“GR-16-0110-125-0-0000-0001-2300-695”。我正在尝试发现 IBAN 号码是否没有空格、空格、破折号,甚至是组合。 @NetMage 看起来 backref 模式问题不大,捕获应该是after GR and one is missing between \d3\w 实际上,标准规定分隔符每四个字符出现一次。再看看原来的问题。 您好!很抱歉延迟回复。泡泡,你的正则表达式确实有效,但我不确定我正在使用的应用程序是否可以“消化” k 参考。是否可以通过以下方式获得相同类型的输出: GR\d2[ -.]\d4[ -.]\d3[ -.]\w[ -.]\ w4[ -.]\w4[ -.]\w4[ -.]\w3?谢谢!

以上是关于IBAN 正则表达式包括空格和破折号的主要内容,如果未能解决你的问题,请参考以下文章

IBAN 正则表达式设计 [重复]

正则表达式用破折号、空格破折号、点空间、点和带有空字符串的撇号替换空格

正则表达式来掩盖 IBAN

IBAN正则表达式(所有IBAN)

JavaScript:正则表达式 CamelCase 到句子

如何为 IBAN 数组正确添加空格