0

我正在尝试获取它,以便如果输入到文本框中的值不是 0.0 到 4.9 之间的十进制数,小数点前后只有一位,则弹出警报消息,但无论我是什么数字都会弹出消息输入,我认为我的正则表达式有问题,但我无法弄清楚。

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

return false 在那里,因为如果数字无效,那么函数将退出。

4

2 回答 2

1

您也可以在不使用 RegExp 的情况下执行此操作,方法是通过parseFloat将值解析为数字并通过isFinite检查结果。

// 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;
}

在这里,您对匹配的位置不感兴趣,而只对匹配的事实感兴趣,因此不必使用search,match就足够了。

于 2012-06-17T19:08:16.560 回答