C# 正则表达式将从IBAN捕获BBAN?

C# 正则表达式将从IBAN捕获BBAN?,c#,regex,banking,C#,Regex,Banking,我发现一个正则表达式匹配所有国家/地区的所有IBAN编号: 我试图调整它,使它有两个捕获组,一个用于国家代码(前两个字母),另一个用于帐号(最后10位?) “^(?[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}(?[0-9]{7}([a-zA-Z0-9]?){0,16})” 上面的正则表达式无法捕获帐号。我想基本上捕捉最后10位数字,但由于BBAN在所有国家都是不同的(这就是为什么IBAN被发明的原因),这并不总是相似的 我希望有人能给我一些想法 /编辑我将其更改为: "^

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

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

“^(?[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}(?[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-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}([0]*)(?([a-zA-Z0-9]?){0,16}”);

这在我对荷兰数字的单元测试中是有效的,但我不确定其他国家的情况。我还是很想听听你的意见。

据我所知,BBAN是除了国家代码和支票数字之外的一切。在NL中,它正好是4个字母,其余的是银行账户,但它可以是任何格式。因此,基本上,“官方”BBAN忽略了前4个字母数字


该正则表达式
([a-zA-Z0-9]?){0,16}中的最后一个组捕获0到16个字符。这就是您在命名组中想要的
AccountNumber
?在0基本上是一个想法之后,我们将捕获所有内容。但我决定现在只抓捕荷兰BBAN,因为那是我们的国家。
"^(?<CountryCode>[a-zA-Z]{2})[0-9]{2}[a-zA-Z0-9]{4}(?<AccountNumber>[0-9]{7}([a-zA-Z0-9]?){0,16})"
"^(?<CountryCode>[a-zA-Z]{2})[0-9]{2}[a-zA-Z0-9]{4}([0]*)(?<AccountNumber>([a-zA-Z0-9]?){0,16})";