Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's a C# regular expression that'll validate currency, float or integer?

What is a regular expression suitable for C# that'll validate a number if it matches the following?

 $1,000,000.150
 $10000000.199
 $10000 
 1,000,000.150
 100000.123
 10000

Or the negative equivalents?

like image 321
nailitdown Avatar asked Mar 06 '09 06:03

nailitdown


2 Answers

You can use csmba's regex if you make one slight modification to it.

^\$?(\d{1,3},?(\d{3},?)*\d{3}(.\d{0,3})?|\d{1,3}(.\d{2})?)$
like image 173
gregwhitaker Avatar answered Oct 12 '22 13:10

gregwhitaker


I think ssg is right. It's not a really good use of Regex, especially if your software has to deal with non-US centric data entry.

For instance, if the currency symbol is the Euro, or the Japanese Yen or the British Pound any of the other dozen currency symbols out there?

What about number formatting rules?

In the US you would enter 1,000,000.00 but in France, this should be 1.000.000,00. Other countries allow spacing between digit-grouping...

If you use a straight Regex without taking the Culture into account, then you're never going to validate successfully unless you're 100% sure your software will never ever be used in a non-US centric context.

like image 32
Renaud Bompuis Avatar answered Oct 12 '22 14:10

Renaud Bompuis