チェックは、正規表現でやれば、いろんな言語でいけそうなので、正規表現で、いろんな値をチェックする方法を考える、シリーズ「正規表現でのチェック方法を考える」。
今、数字関係をやっています。今回は、カンマつき数字です。
なお、このシリーズにおいて、説明文中の¥は、断りがなければ、半角の円マーク(ないしは、バックスラッシュ)に変えてください(入力が面倒なので全角にしています)
■考え方
まず、はじめのカンマの前とあとで考えましょう(カンマがないものは、カンマの前だけを考えます)
・カンマの前は、
0のつぎ1,2,3,4・・・10、11、12・・・100、101・・・999です。
ってことは、いつもどおり、0を分けましょう。
そうすると、一番上は、1から9までの数です。
1桁の場合は、そのあとありません。
2桁だと、数字1桁が後につき、
3桁だと、数字2桁が後につきます。
これをまとめると、
0|[1-9]¥d{0,2}
となります。
・カンマの後は、
カンマのあと、数字かならず3桁の並びです。
これが、あるか、もしくはこの塊がつづきます。つまり
(¥d{3})*
です。
・まとめて書くと
/^(0|[1-9]¥d{0,2}(,¥d{3})*)$/
■ソースコード
ってことで、これをプログラムの中に入れると、こんなかんじ
<HTML> <HEAD> <TITLE>JavaScriptテスト広場</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function load() { } function mycheck(val) { if (val.search(/^(0|[1-9]¥d{0,2}(,¥d{3})*)$/) != -1 ) { } else { alert("エラー"); } } --> </SCRIPT> </HEAD> <BODY onload="load()"> <FORM NAME="buf"> <INPUT NAME="Text1" TYPE="hidden"> </FORM> <FORM NAME="zikko"> <INPUT NAME="text1" TYPE="TEXT"> <INPUT NAME="button1" TYPE="BUTTON" VALUE="実行" onclick=mycheck(text1.value)> </FORM> </BODY> </HTML> |
(上記 < > ¥ は、本当は半角)
今回はここまで。
