2. カンマ区切りの金額を検索
次は、カンマ区切りの金額を検索する正規表現についてです。
0以上、999,999,999以下のカンマ区切りの金額を検索する。 前ゼロは不許可とし、負数および小数はないものとする。
対象データと期待する検索結果は、下記となります(黄緑色が検索にヒットした部分です)。
![対象データと期待する検索結果 対象データと期待する検索結果](http://cz-cdn.shoeisha.jp/static/images/article/2676/fig06.gif)
正規表現を考える際には、場合分けして考えると有効なことが多いです。まず、0以上999以下の整数について考えると下記の正規表現で表せることが分かります。
^(0|[1-9][0-9]{0,2})$
1文字目が0ならば、その直後に行末があること。1文字目が0でなければ、その後の行末までの数字の数が2文字以内であること。という考え方になります。
後は、0以上999以下から、0以上999,999,999以下に条件を拡張し、1文字目が0ならば、その直後に行末があること。1文字目が0でなければ、その後の数字の数が2文字以内で、その後の行末までのカンマと数字3文字のセットが、0個以上2以下であること。と考えて、答えは下記となります。
^(0|[1-9][0-9]{0,2}(,[0-9]{3}){0,2})$
正規表現のイメージは下記です。
![正規表現のイメージ 正規表現のイメージ](http://cz-cdn.shoeisha.jp/static/images/article/2676/fig07.gif)