2012-12-17 98 views
0

我有大量的文本字段需要评估onkeyup,以确保没有输入,但数字。小数点可以。缺乏价值也是如此。为什么这个正则表达式匹配小数?

由于某些原因,这是匹配的小数。例如,我输入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; 
     } 
    } 
} 

回答

3

你的正则表达式,需要在小数点后的一个或多个数字,你有逃脱第一组中的-)。如果你不希望要求小数点后一位数字,那么你可以使用这个(改变+*并提出\-前):

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

尝试过,但我仍然被拒于小数点。试图在1.1中输入并粘贴到1.1(如果它与onkeyup很怪异),但都被标记为非数字?谢谢你的回应! – jerrygarciuh

+0

@jerrygarciuh - 你必须逃避第一组中的'-'。我更新了我的答案。 – jfriend00

+0

已更新但仍标记小数? – jerrygarciuh

相关问题