小数点やプラスマイナスを考慮した条件が割と見つからなかったのでメモ。
$('[name=form1]').val().match(/^[\-+]?\d+(\.\d+)?$/)
説明
$(‘[name=form1]’).val()
jQueryで文字を取得している。
.match(/^[\-\+]?\d+(\.\d+)?$/)
肝の部分
matchで条件を指定している。条件に合えば配列でいろいろ返してくれる。
合わなければnullが返ってくるのでそれで判別する。
^[\-\+]?
^で先頭に-か+があるかないかを判別\はエスケープ(-と+は別の意味を持つことがあるので)
[]は中に含まれているどれかの意味。?はあってもなくても良いという意味。
\dは数値の意味。ちなみに[0-9]も同じ意味です。
(\.\d+)?$
\.でドットの意味。そのあとに数値が続く。で、?はあってもなくても良いという意味。
$はこれで最後という意味。ないと、この後ろに文字が続いても条件にマッチしてしまう。
日本語翻訳すると
先頭から順番に+か-が頭についてなくてもいいけど、
数値は一つ以上あってほしいな。
そのあとにドットがあればそのあとに数字が続いて欲しい。
そしてそれ以上はなしで終わるよ
って意味です。
コメント