For a Dutch customer I currently work for, I worked out the bank account number check (in Dutch: elfproef voor bankrekeningnummers). After checking out the Internet for the correct definition of Dutch bank account numbers (found on Wikipedia), I created the next check in C#:
var cleanAccNumber = accountNumber.Replace(".", ""); // A bank account number consists of 9 or 10 digits if (!(cleanAccNumber.Length == 9 || cleanAccNumber.Length == 10)) return false; // ... all being numeric and not resulting in a 0 when converted to a number ... long l; if (!long.TryParse(cleanAccNumber, out l)) return false; if (l == 0) return false; // pad it to the left to 10 digits with preceding zero's. cleanAccNumber = cleanAccNumber.PadLeft(10, '0'); // ... the number must be validatable to the so-called 11-proof ... long total = 0; for (var i = 1; i <= cleanAccNumber.Length; i++) { // 11-proof for 10 digit bank account numbers (bron: Wikipedia): (1*A + 2*B + 3*C + 4*D + 5*E + 6*F + 7*G + 8*H + 9*H + 10*I) % 11 == 0 var number = Convert.ToInt32(cleanAccNumber[i - 1].ToString()); total += number*i; } // ... not result in a 0 when dividing by 11 ... if (total == 0) return false; // ... and not have a modulo when dividing by 11. return total % 11 == 0;
Good luck when you should build one for yourself!