I'm trying to validate user input, which is just comma separated numbers. I'd like to do this with RegEx, but can't come up with the right expression.
It should validate the following strings (and larger):
1
12
123
1,234
12,345
123,456
and invalidate the following strings (and crazier):
1,1
1,12
12,1
12,12
123,1
123,1
Any help would be greatly appreciated.
Here's what I've tried so far (EDIT: which don't work), along with several variants ->
^(((\d{1,3},)*\d{3})|(\d{1,3}))$
^(\d{1,3}[,])*\d{3}|\d{1,3}$
How about this:
^\d{1,3}([,]\d{3})*$
Basically you can have 1-3 digits comma free. After that, you need a comma. If you've got a comma, it must be followed by 3 more digits. That comma-3-digit sequence can appear any number of times.
EDIT: As Andrew Hare observed, you don't care about what was found inside the parentheses beyond the fact that it matched, so you can use a non-capturing group instead by placing ?:
after the opening parenthesis:
^\d{1,3}(?:[,]\d{3})*$
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With