0

textBoxに入力された値が0.0から4.9までの10進数ではなく、小数点以下1桁の場合にアラートメッセージがポップアップするようにしようとしていますが、メッセージはIの数に関係なくポップアップします。入って、正規表現に何か問題があると思いますが、わかりません。

if ((textBox.value.search("/^[0-4]\\.[0-9]$/")) == -1) {
    alert("Invalid Entry");
    return false;
}

数値が無効な場合、関数が終了するため、falseが返されます。

4

2 に答える 2

1

parseFloatを介して値を数値に解析し、isFiniteを介して結果を確認することにより、RegExpを使用せずにこれを行うこともできます。

// Parse the value as a float. If the value cannot be parsed,
// `parseFloat` will return NaN    
var toFloat = parseFloat( textBox.value );

// Use `isFinite` to verify that parsing was successful. If it
// was, just check the range (i.e. between 0 and 4.9)
if ( isFinite( toFloat ) && toFloat >= 0 && toFloat <= 4.9 ) {
    // Input is valid
} else {
    // Input is invalid
}

それがお役に立てば幸いです。乾杯!

于 2012-06-17T19:39:01.587 に答える
0

そのはず:

if ((textBox.value.match(/^[0-4]\.[0-9]$/))) {
    alert("Invalid Entry");
    return false;
}

ここでは、一致の位置には関心がありませんが、一致するという事実だけに関心があるため、を使用する必要はありませsearchmatch

于 2012-06-17T19:08:16.560 に答える