【发布时间】:2012-10-18 23:53:52
【问题描述】:
我需要写一个正则表达式来检查美国和加拿大主要银行的有效银行帐号格式(我已经知道过境号和机构号的格式,但我不知道帐号的格式) .有谁知道正则表达式检查应该是什么?也许我只是检查以确保所有字符都是数字?
【问题讨论】:
标签: regex
我需要写一个正则表达式来检查美国和加拿大主要银行的有效银行帐号格式(我已经知道过境号和机构号的格式,但我不知道帐号的格式) .有谁知道正则表达式检查应该是什么?也许我只是检查以确保所有字符都是数字?
【问题讨论】:
标签: regex
美国的帐号不符合 IBAN 标准; AFAIK 没有明确的美国帐号标准,仅用于路由号码。
【讨论】:
我相信 phoebus 是正确的 - 就美国而言,根本无法保证符合标准,因此正则表达式并不像人们想象的那么有用。
符合ACH (Automated Clearing House) 网络标准的帐号最多可以包含 17 个字母数字字符 - 问题不是所有金融交易都是 ACH。 (另见united-states-banking-institution-account-number-regular-expression)
对于位于位置 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
【讨论】:
银行帐号没有美国标准。但是,NACHA 为 ACH 交易提供了一个specification,其中说明了一个示例帐号字段(DFI 帐号):
最左边的 17 个字符插入 DFI 帐号 字段和剩余的字符被截断。 ... 如果少于 17 字符,左对齐并将未使用的空格留空。
作为CCD Entry Detail 一部分的 DFI 帐号字段表示为“alphameric”(ASCII 值大于 0x1F)。
这是我想出的正则表达式。它与完整的 ASCII 范围不匹配,但我认为它可以处理大多数帐号。 (17 个字符长,由单词、-、。字母数字前导。带空格的右填充。如果出现破折号 - 不连续且不在末尾)
^(?<DFIAccountNumber>(?=[\w\- ]{17})[0-9A-Za-z](\-?\w+)*[ ]*)
【讨论】: