目的
入力フォームに入れたデータが、半角の正の整数(正数)かまたは、負の整数(負数)どうか判断できます。
そうでない場合は、"偽"。
半角の正の整数(正数){負の整数(負数)}である場合、その値を戻します。
空文字の場合は、偽としています。
この処理は、0 以上かどうかの判断になっています。

参考:
利用している Java Script のメソッド



動作環境
Netscape Navigator 3.x 以上、Internet Explorer 3.x で動作すると思います。

動作確認ブラウザ
Netscape Navigator 3.04en for MS-Windows9x
OK
Netscape Communicator 4.6jp for MS-Windows9x
?
Netscape Communicator 4.72jp for MS-WindowsNT4.0
OK
Netscape Communicator 4.75jp for MS-Windows2000
OK
Netscape 6jp for MS-Windows2000
?
Internet Explorer 4.72.3110.1 SP1 for MS-Windows9x
?
Internet Explorer 4.72.3110.8 SP1 for MS-WindowsNT4.0
?
Internet Explorer 5.00.2314.1003 for MS-WindowsNT4.0
OK
Internet Explorer 5.00.2919.6307 for MS-WindowsNT4.0
OK
Internet Explorer 5.00.2920.0000 for MS-Windows9x
OK
Internet Explorer 5.00.2920.0000 for MS-Windows2000
OK
Netscape Communicator 4.7jp for MacOS9.04
?
Netscape 6.1 for MacOS9.2.2 (J1-9.2.2 MacOSROM J1-8.8.1)
OK
Internet Explorer 5.0(2022) for MacOS9.2.2 (J1-9.2.2 MacOSROM J1-8.8.1)
OK
Netscape 6.2.1jp for MS-Windows2000
OK
Netscape 6.2.3jp for MS-Windows2000
OK
Opera (free) 5.12 build932 for MS-Windows2000
OK
Mozilla 0.9.9 for RedHat Linux7.3
OK
Netscape Communicator 4.79Jp for RedHat Linux7.3
OK

仕組み
このページのソースを見る。
HEAD タグの、moji_IsIntsPM(チェックする文字列,オプション) 関数がメイン関数です。

つまるところ、符号(プラスとかマイナス)のチェックをして、先頭の 0 を省いて数字だけ(桁が大きいようなら、文字列を切り刻んで)を、 「JavaScript による入力フォームのデータが数字かどうかチェック」に渡しているという感じです。

文字列を分割してチェックしているので(moji_IsInts() 関数)、バッファオーバーフローの境界とかのチェックはしていないです。
あくまで、チェック文字列が「数」として妥当かどうかのチェックです。
JavaScript の型としての「数」としての妥当性ではないです。
(原理的には、百桁でも二百桁でも、それが「数」として妥当であれば、"真" と返しますよ)


moji_IsIntsPM(チェックする文字列,オプション) 関数

オプションは、

戻り値は、
チェックする文字列が正数か負数の場合
チェックする文字列の冗長でない数字表現を返す。
例えば、
099 ==> 99
+99 ==> 99
-088 ==> -88
-0 ==> 0
+0 ==> 0
00 ==> 0
(仕様 : ゼロの場合も、正数または負数と判断する)
それ以外
偽(false) の値を返す


moji_IsIntsPM(チェックする文字列,オプション) 関数の仕組みは、
  1. チェックする文字列が空文字列の場合は、ダメ
  2. 正規なオプションかどうか判定
  3. SubChkZero() 関数でゼロ・チェックを行う
  4. ゼロ(+0,0,-0,....)ではない場合は、
  5. SubChkKigo() 関数で符号のチェックを実施
  6. 符号の問題がクリアされて、符号が左側についていたら、削除
  7. チェックする文字列は、全て数字のはずですが、空文字列になったらダメ
  8. moji_IsInts() 関数に処理を渡す
  9. 戻り値の先頭の 0 を取り除いて...
  10. 空文字列になったら、0 を返す
  11. そうではなくて...
  12. 負数判定の場合、マイナス符号をつけて返す
    正数判定の場合、符号はつけずに返す



SubChkZero(チェックする文字列,オプション) 関数

オプションは、

戻り値は、
チェックする文字列が "+0" や "-0" や "0" などの場合
(オプションによっては、"-" や "+" なども含)
真(true)の値を返す
それ以外
偽(false) の値を返す


SubChkZero(チェックする文字列,オプション) 関数の仕組みは、
  1. 正規なオプションかどうか判定
  2. オプションの値が "1" で、チェックする文字列に "0" が一つも含まれていない場合は、ダメ
  3. チェックする文字列の左側の文字列が符号ならその文字を削除して、数字だけを想定される文字列にする
  4. 文字列の左側の "0" を削除する
  5. 結果としてでてきた文字列が空文字列となれば、"真" を返す
  6. そうでなければ "偽" を返す

SubChkKigo(チェックする文字列,オプション) 関数

オプションは、

戻り値は、
チェックする文字列が正か負であり、オプションと一致する
真(true)の値を返す
それ以外
偽(false) の値を返す


SubChkKigo(チェックする文字列,オプション) 関数の仕組みは、
  1. チェックする文字列が空ではない
  2. 正規なオプションかどうか判定
  3. 負の場合、
  4. チェックする文字列の左側が、"-" でなくてはダメ
  5. 正の場合、
  6. チェックする文字列の左側が、"-" ではダメ



moji_IsInts(チェックする文字列) 関数

戻り値は、
チェックする文字列が数字の場合
チェックする文字列をそのまま返す
(仕様1 : 空文字列の場合 "0" を返す) (仕様2 : 符号{"+","-"}の入った文字列は "偽" とする)
それ以外
偽(false) の値を返す


moji_IsInts(チェックする文字列) 関数の仕組みは、
  1. チェックする文字列から、左側にある "0" を消す
    (09 -> 9)
  2. 空文字列なら、"0" を返す
  3. 符号("+","-")があれば、ダメ
  4. チェックする文字列が、MaxLength(デフォルトは 5) より長い場合、右側(MaxLength と同じ文字列長)と左側に分割する
  5. 右側の文字列を「JavaScript による入力フォームに数字が入ったかどうかのチェックプログラム」に処理を渡す
  6. "偽" でなく、左側の文字列が "0" のみでない場合、左側の文字列を再帰処理(自分自身 moji_IsInts() 関数に処理を渡す)する
  7. 戻り値が "偽" でなければ、その文字列を結合する
  8. 引数として渡された文字列か、"偽" を返す


という感じです。


正数(正の整数)のチェック
ここにいろいろと文字を入れてみて
正数なら、こっちにその値,それ以外は、"偽"
(0 は "真" としている)



負数(負の整数)のチェック
ここにいろいろと文字を入れてみて
負数なら、こっちにその値,それ以外は、"偽"
(0 は "真" としている)



免責など
著作権は放棄します。
このプログラムを使用したことによって生じた、
いかなる損害についても責任は持ちません。
ソースコードについても、各自の責任において、
自由にいじってくれてもいいです。


mail to active@window.goukaku.com