6
function validInteger(theNumber){
    var anyNonDigits = new  RegExp('\D','g');
    if(parseInt(theNumber)&&!anyNonDigits.test(theNumber)){
        return true;
    }else{
        return false;
    }
}

上記は、入力を検証するために作成した関数です。すべての正の整数が必要です。私が直面している問題は、RegExp オブジェクトにあります。これは非常に単純なはずですが、何らかの理由で機能していません。

たとえば、'f5' を渡すと true になりますが、'5f' を渡すと false になります。負の数を渡すときにも問題があります。-3 は、変数を RegExp に渡す前に文字列化しても捕捉されません。if ステートメントに' ' を追加することでこれを修正できます&&parseInt(theNumber)>0が、RegExp もそれをキャッチする必要があるように感じます。前もって感謝します!

4

3 に答える 3

11

単に:

function validInteger(theNumber){    
    return theNumber.match(/^\d+$/) && parseInt(theNumber) > 0;
}

ライブデモ

またはregex、@Eric によって提案されたもののみを使用すると、さらに単純になります。

return /^[0-9]\d*$/.test(theNumber);

ライブデモ

アップデート:

優れたチートシート。リンクは5年後に消えました、ごめんなさい。

于 2012-06-07T16:55:00.703 に答える
1

正規表現を使用しなくても問題ない場合は、次のように指定できます。

function validInteger(theNumber){
    var number = +theNumber;

    return number > -1 && number % 1 === 0;
}

0 を正の整数と見なし、+0 と -0 を区別したくないと仮定します。

この関数は、「文字列」だけでなく、数値に変換できる任意の値を受け入れることに注意してtheNumberください。もちろん、数値も渡すことができます。

于 2012-06-07T17:01:15.263 に答える
0

シンプルに!

function validate(num){
    return (num | 0) > 0;
};

この関数は、正の整数に対してのみ「true」を返します。

于 2012-06-07T17:06:41.317 に答える