为什么这个正则表达式匹配小数?

时间:2012-12-17 18:22:16

标签: javascript validation

我有大量的文本字段需要在keyup上进行评估,以确保没有输入任何数字。小数是好的。没有价值也是如此。

由于某种原因,这是小数匹配。我输入4然后输入。它标志着。

我该如何纠正?

var s_in = 0;
for (var i = 10; i < 19; i++) {
    var fObj = document.getElementById(field+'_'+i);
    var text = fObj.value;
    if (text) {
        var s = parseInt(text);
        var pattern = /^[+-]?(\d*\.)?\d+$/;
        var result;
        if ((result = pattern.exec(text)) != null) {
            if (s > -1) {
                s_in += s;
            }
        } else {  // not empty and not a number
            alert('The entry for Hole ' + i + ' ' + ucfirst(field) + ' is "' + text + '" This is not a number. It will be erased now.');
            fObj.value = '';
            fObj.focus();
            return false;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

你的正则表达式需要小数点后面的一个或多个数字,你必须逃避第一组中的-。如果您不想要小数点后的数字,那么您可以使用此数字(将+更改为*并将\放在-前面):

/^[+\-]?(\d*\.)?\d*$/