正規表現 /^(?:0|[1-9]\d*)$/ とかで使う ”?:” っていうのは

(?:) グループ化しない括弧を表します。

正規表現で使う () は、
1.正規表現をグループ化し、後で\n, $n などで参照する
2.(A|B) などのようにまたはということを意味する
ときなどに使われます。

で、(?:) というのは後者で使うよ、ということを明示したい時に使うものです。

なのでタイトルの、

(?:0|[1-9]\d*)

というのは

0 または [1-9]\d*

ということですね。


ref.
http://d.hatena.ne.jp/perlcodesample/20100827/1278596435