Jquery验证输入为八个整数和两个小数

时间:2013-03-24 15:12:16

标签: jquery regex validation

我已经尝试过这段代码,但我想我的正则表达式有错误,因为它总是true

除了正则表达式之外,我还遇到keypress的问题,因为我在添加新char之前测试了值,我不想使用keyup因为我不知道在哪里添加了最后一个字符(用户不会总是在输入字段的末尾输入字符。)

我很感激一个很好的解决方案,谢谢。

$('.myInputField').keypress(function(){
    var val = $(this).val();
    var regexTest = /^[0-9]{0,8}[.][0-9]{0,2}|[0-9]{0,8}$/;
    var ok = regexTest.test(val);
    if(ok)
        return true;
    else
        return false;

1 个答案:

答案 0 :(得分:0)

我想你可能想要这样的正则表达式:

/^\d{0,8}(\.\d{0,2})?$/

您使用的是.而不是\.,但.会匹配任何字符。

靠近末尾的?允许您拥有“.12”或没有。

\d是限制数字的捷径。

请考虑不使用keypress - keyup(更好)或change(最佳)是其他选择。

如果您需要“响应极快”的反馈(不能只使用change),请考虑做这样的事情(请使用比我在示例中使用的简单CSS更好的方法):

$('.myInputField').keyup(function(e){
  var val = $(this).val();
  var regexTest = /^\d{0,8}(\.\d{1,2})?$/;
  var ok = regexTest.test(val);
  if(ok) {
      $(this).css('background-color', 'green');
  } else {
      $(this).css('background-color', 'red');
  }
});

JS FIDDLE EXAMPLE

注意:我还更改了代码,以便在输入中输入.时,我们希望您在小数点后面加上至少一位。如果您确实不想进行此修改,请将\d{1,2}更改为\d{0,2}