SWIFT代码的正确正则表达式是什么?

12

我需要在我的ASP.NET网页上过滤用户输入:

<asp:TextBox runat="server" ID="recipientBankIDTextBox" MaxLength="11" />
<asp:RegularExpressionValidator runat="server" ValidationExpression="?" ControlToValidate="recipientBankIDTextBox" ErrorMessage="*" />

据我所知,SWIFT代码必须包含5或6个字母和其他字符,总长度最多为11个字母数字混合。

如何正确实现这样的规则?

3个回答

38

Swift Code(国际银行代码)应为8或11个字母或数字,其中前六个必须是字母。但无论如何,重要的是您了解如何创建这样的表达式。下面是一个带有注释的正则表达式,以显示各个部分的含义。

^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$
       ^          ^           ^  ^
       |          |           |  |
       6个字母    2个字母或数字 3个字母或数字
                 或数字     |
                             最后三个是可选的

所有维基百科上的示例都仅显示大写字母A-Z。如果您也希望允许小写字母,则将A-Z更改为A-Za-z。我建议查看ISO标准以查看其规定的内容,但不幸的是,获得副本并非免费。


6

这应该能解决问题。

^([a-zA-Z]){4}([a-zA-Z]){2}([0-9a-zA-Z]){2}([0-9a-zA-Z]{3})?$

为什么要用两个不同的组 - 第一个和第二个 - 来表示相同的表达式?为什么不只用 ([a-zA-Z]){6} - abatishchev
1
是的,你说得对,你可以这样做 - 我将其拆分为两个组,纯粹基于第一组属于银行,第二组是国家代码。例如,Natwest银行,英国。 NWBK加上 GB - codingbadger

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接