suin.io

正の整数と小数にマッチする正規表現

suin2010年10月28日

今回は備忘録がてらの小ネタです。

「正の整数と小数にマッチする正規表現」が必要になったので書いておきます。フォームの入力値チェックで、整数か小数かチェックするためのものです。最初は、PHPのis_numeric()でいいかなと思ったのですが、"1e4"とかも通してしまうようなので、正規表現でやることにしました。(もっといい方法あるよ、という情報募集)数値を正規表現でチェックするのも妙な感じがしますが、$_POSTに入ってる値は基本的に文字列なので、$_POSTから取ったばかりのときは正規表現でもOKだと思います。

^([1-9]\d*|0)(\.\d+)?$

マッチ・アンマッチはこんな感じ...

0 ... OK
1 ... OK
123 ... OK
0123 ... NG
0.1 ... OK
0.123 ... OK
12.345 ... OK
1. ... NG
hoge ... NG
0755 ... NG

正規表現のテストは、Regex Testerが激しく便利ですね。

RELATED POSTS