Okay, I understand better now.
Sergei Z's regex is good. One thing, I'm pretty religious about putting anything in parens that I don't need captured as a backreference into a non-capturing group, like so:
^(?:[1-9]\d*,)+[1-9]\d*$
It will run just a tiny, tiny bit faster.
Two things about my previous regex...
1. The construct above without the negative lookahead will run a bit faster in some cases.
2. It looks for a number starting and ending at a word boundary, not at the very beginning and end of a string (e.g. "cat 123 dog" will return 123 instead of failing the match).
To address both these issues, change \b(?!0)\d+\b to this:
^[1-9]\d*$
My regex-centric blog :: JavaScript regex tester