银行账号的正则表达式?

时间:2009-11-24 01:45:13

标签: regex

我需要写一个正则表达式来检查美国和加拿大主要银行的有效银行帐号格式(我已经知道过境号码和机构号码的格式,但我不知道帐号的格式) 。有谁知道正则表达式检查应该是什么?也许我只是检查以确保所有字符都是数字?

3 个答案:

答案 0 :(得分:5)

美国不符合账户号码的IBAN标准; AFAIK对于帐号没有明确的美国标准,仅适用于路由号码。

答案 1 :(得分:2)

我相信phoebus是正确的 - 在美国的情况下根本没有保证符合标准,因此正则表达式没有人们想象的那么有用。

符合ACH (Automated Clearing House)网络标准的帐号最多可包含17个字母数字字符 - 问题不是所有金融交易都是ACH。 (另见united-states-banking-institution-account-number-regular-expression

根据patent document

  

对于位于第13-39位的字段5,DFI帐号包含17个字符,示例显示为允许任何字母数字形式。

State of California Tax Francise Board EFT Program Guide第25页同意上述内容。

因此,要最少检查ACH格式合规性,请检查1到17个字母数字

^\w{1,17}$

显示ACH标准特定用途的资源:
http://ribbs.usps.gov/ncsc_ach_pay_instruct/documents/tech_guides/Memphis_NCSC_ACH_Credit_Payment_Option.pdf

答案 2 :(得分:1)

银行帐号没有美国标准。但是,NACHA为ACH交易提供了specification,其中列出了一个示例账号字段(DFI账号):

  

最左边的17个字符插入DFI帐号   字段和其余字符被截断。 ......如果少于17   字符,左对齐并将未使用的空格留空。

作为CCD Entry Detail一部分的DFI帐号字段表示为“alphameric”(ASCII值大于0x1F)。

这是我提出的正则表达式。它与完整的ASCII范围不匹配,但我认为它将处理大多数帐号。 (17个字符长由单词组成, - ,。字母数字前导。右边有空格。如果短划线存在 - 不连续而不是结尾)

^(?<DFIAccountNumber>(?=[\w\- ]{17})[0-9A-Za-z](\-?\w+)*[ ]*)