正则表达式从 IBAN 捕获 BBAN?

Posted

技术标签:

【中文标题】正则表达式从 IBAN 捕获 BBAN?【英文标题】:Regex to capture BBAN from IBAN? 【发布时间】:2014-06-17 02:20:00 【问题描述】:

我发现一个正则表达式匹配来自所有国家/地区的所有 IBAN 号码here:

[a-zA-Z]2[0-9]2[a-zA-Z0-9]4[0-9]7([a-zA-Z0-9]?)0,16

我尝试调整它,使其具有两个捕获组,一个用于国家代码(前两个字母),一个用于帐号(后 10 位?)

"^(?<CountryCode>[a-zA-Z]2)[0-9]2[a-zA-Z0-9]4(?<AccountNumber>[0-9]7([a-zA-Z0-9]?)0,16)"

上面的正则表达式无法捕获帐号。我想基本上捕获最后 10 位数字,但由于 BBAN 在所有国家/地区都不同(这就是发明 IBAN 的原因),所以这并不总是相似的。

我希望有人能给我一些想法。

/编辑我把它改成:

"^(?<CountryCode>[a-zA-Z]2)[0-9]2[a-zA-Z0-9]4([0]*)(?<AccountNumber>([a-zA-Z0-9]?)0,16)";

这适用于我对荷兰号码的单元测试,但我不确定其他国家/地区。我仍然很想听听你的评论。

【问题讨论】:

该正则表达式 ([a-zA-Z0-9]?)0,16 中的最后一组捕获 0 到 16 个字符。这就是您想要的命名组AccountNumber 中的内容吗? 捕获 0 之后的所有内容基本上就是这个想法。但我决定暂时只占领荷兰 BBAN,因为那是我们的国家。 【参考方案1】:

据我所知,BBAN 是除了国家代码和校验位之外的所有内容。在荷兰,它恰好是 4 个字母,其余的是银行帐户,但它可以是任何格式。所以基本上,“官方”BBAN 就是忽略前 4 个字母数字的一切。

https://en.wikipedia.org/wiki/International_Bank_Account_Number#Structure

【讨论】:

以上是关于正则表达式从 IBAN 捕获 BBAN?的主要内容,如果未能解决你的问题,请参考以下文章

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

IBAN正则表达式(所有IBAN)

正则表达式来掩盖 IBAN

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

IBAN 的正则表达式允许空格并检查确切长度

使用 Python 从文本中提取 IBAN