This is something of a follow up from a previous question. The requirements have changed, and I\'m looking for some help with coming up with regex for either a comma separated n
Why not use Int.TryParse() rathern then a regex?
Just add an "or one or more digits" to the end:
^(?:\d{1,3}(?:[,]\d{3})*|\d+)$
I think you had it almost right the first time and just didn't match up all your parentheses correctly.
One thing i've noticed with all these is that the first bit of the regex allows for '0' based numbers to work. For example the number:
0,123,456
Would match using the accepted answer. I've been using:
((?<!\w)[+-]?[1-9][0-9]{,2}(?:,[0-9]{3})+)
Which also ensures that the number has nothing in front of it. It does not catch numbers of less then 1,000 however. This was to prevent ill-formatted numbers from being captured at all. If the final +
were a ?
the following numbers would be captured:
0,123
1,2 (as 2 separate numbers)
I have a strange set of numbers to match for (integers with commas, with spaces and without both), so i'm using pretty restrictive regexs to capture these groups.
Anyway, something to think about!
Please see this answer for a definitive treatment of the “Is it a number?” question, including allowance for correctly comma-separated digit groups.
Try this:
^\d{1,3}(?:(?:,\d{3})+|\d*)$
This will match any sequence that begins with one to three digits, followed by either