我有大量的文本字段需要在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;
}
}
}
答案 0 :(得分:3)
你的正则表达式需要小数点后面的一个或多个数字,你必须逃避第一组中的-
。如果您不想要小数点后的数字,那么您可以使用此数字(将+
更改为*
并将\
放在-
前面):
/^[+\-]?(\d*\.)?\d*$/