2009-11-24 41 views
6

Tôi cần viết biểu thức chính quy để kiểm tra định dạng số tài khoản ngân hàng hợp lệ của các ngân hàng lớn ở Hoa Kỳ và Canada (Tôi đã biết định dạng cho số chuyển tuyến và số tổ chức, nhưng tôi không biết định dạng cho số tài khoản). Có ai biết những gì biểu hiện thường xuyên kiểm tra nên được? Có lẽ tôi chỉ kiểm tra để chắc chắn rằng tất cả các ký tự là chữ số?Cụm từ thông dụng cho số tài khoản ngân hàng?

Trả lời

5

Hoa Kỳ không tuân thủ các tiêu chuẩn IBAN cho số tài khoản; AFAIK không có tiêu chuẩn cuối cùng của Hoa Kỳ cho số tài khoản, chỉ dành cho số định tuyến.

2

Tôi tin rằng phở là chính xác - đơn giản là không có tiêu chuẩn được đảm bảo tuân thủ trong trường hợp của Hoa Kỳ, do đó, một regex không phải là hữu ích như người ta có thể tưởng tượng.

Số tài khoản tuân thủ tiêu chuẩn mạng ACH (Automated Clearing House) có thể có tối đa 17 ký tự chữ và số - vấn đề không phải là tất cả các giao dịch tài chính là ACH. (SEE cũng united-states-banking-institution-account-number-regular-expression)

Theo patent document này:

Đối với lĩnh vực 5, tọa lạc tại vị trí 13-39, DFI số tài khoản đòi hỏi 17 ký tự, mà ví dụ cho thấy như cho phép bất kỳ hình thức chữ và số.

Trang 25 của State of California Tax Francise Board EFT Program Guide đồng ý với các điều trên.

 

Vì vậy, để một thiểu kiểm tra ACH định dạng tuân thủ, kiểm tra 1 tới 17 alpha-numerics:

^\w{1,17}$ 

 

Một tài nguyên cho thấy việc sử dụng cụ thể của tiêu chuẩn ACH:
http://ribbs.usps.gov/ncsc_ach_pay_instruct/documents/tech_guides/Memphis_NCSC_ACH_Credit_Payment_Option.pdf

1

Không có tiêu chuẩn của Hoa Kỳ cho số tài khoản ngân hàng. Tuy nhiên, NACHA cung cấp một specification cho các giao dịch ACH trong đó nêu cho một trường Số dụ tài khoản (DFI Số tài khoản):

Các tận cùng bên trái 17 ký tự được chèn trong lĩnh vực DFI Số tài khoản và các nhân vật còn lại cắt ngắn. ... Nếu ít hơn 17 ký tự, hãy canh lề trái và để trống khoảng trống không sử dụng.

Trường Số tài khoản DFI là một phần của CCD Entry Detail được chỉ định là 'alphameric' (giá trị ASCII lớn hơn 0x1F).

Đây là regex tôi đã đưa ra. Nó không khớp trên phạm vi ASCII đầy đủ nhưng tôi nghĩ nó sẽ xử lý hầu hết các số tài khoản. (17 ký tự bao gồm từ, -, chữ và số đứng đầu. Bàn phím phải có dấu cách. Nếu dấu gạch ngang hiện tại không liên tiếp và không ở cuối)

^(?<DFIAccountNumber>(?=[\w\- ]{17})[0-9A-Za-z](\-?\w+)*[ ]*) 
Các vấn đề liên quan