正規表現 /^(?: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