Мы используем это очень либеральное регулярное выражение для проверки денег:
new Regex(@"^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,4})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,4})?))\)?$");
Это позволяет все это:
0, 0, (0.0000), .1, .01, .0001, $ .1, $ .01, $ .0101, ($ .1), ($ .01), $ (.0001), 0.1, 0.01 0,0001, 1, 1111, 1111, 1, 1,00, 1 000,00, 1, 1, 1,00 долл., 1 000,00 долл., 1,0000, 1,0000 долл. США, 1 000,00 долл. США, -1, -1,00, -1 000,00 долл. США, 1, , - 1 долл. США, - 1,00 долл. США, - 1 000,00 долл. США, -1 долл. США, -1,00 долл. США, 1 000,00 долл. США, 1 долл. США, (1,00 долл. США), 1 000 долл. США, 1 долл. США, 1,00 долл. США, (1 000,00 долл. США), (1 долл. США), (1,00 долл. США), (1 000,00 долл. США)