【问题标题】:Form Validaton Code Not Working表单验证代码不起作用
【发布时间】:2012-12-09 03:29:46
【问题描述】:
var val_regex = \d{3}+(\.[0-9]{1,2})?$
function validate(form){
    var valOne = form.valone.value;
    var valTwo = form.valtwo.value;
    var valThree = form.valthree.value;


     if (!val_regex.test(valOne)) || (!val_regex.test(valTwo)) ||(!val_regex.test(valThree)){
        $("#val-error").html("Error with inputted value");
        $('#val-error').fadeIn(200).delay(1500).fadeOut(800);
        return false;
     }
     return true;
    }
}

我在这里的正则表达式似乎不起作用。你能看出是什么问题吗?

正则表达式 - 我想要的 - 0 到 999(含)之间的任何数字 - 最多允许 2 个小数位。我是用错误的方式编写正则表达式还是我的 javascript 错误?

【问题讨论】:

  • 2 个小数点?像 1.2.3 这样的字符串应该通过吗?
  • 对不起,我的意思是 1.23 或 232.49 会通过,但不会通过 12.1.2
  • 哈...我是个白痴。我的解决方案是针对 PHP,而不是 JavaScript。回去睡觉吧!

标签: javascript regex


【解决方案1】:

您的正则表达式不匹配一位数或两位数。

试试这个:

var val_regex = /^(([0-9])|([1-9][0-9])|([1-9][0-9][0-9]))(\.[0-9]{1,2})?$/;

【讨论】:

  • 你能提供一些输入/输出,以便我们看看出了什么问题吗?
  • 我通过萤火虫控制台运行了几个输入,它现在正在工作(经过我的编辑)。之前的问题是正则表达式不匹配整个字符串,只是它的一部分(因此现在开​​头的 ^)
  • 我的 JavaScript 代码看起来有问题吗 - 因为它进入了 if 语句/我每次都收到错误语句。
  • 为什么是的,你的括号在你的 if 语句中是不平衡的 :-)
  • 对于这样的事情: var statValOne = form.statone.value; Statone是指表单元素的名称还是指表单元素的id?
【解决方案2】:
var val_regex = /^\d{1,3}(\.\d{1,2})?$/;

解释:

\d{1,3}

允许 1-3 位数字。

\d{1,3}(\.\d{1,2})?

允许 1-3 位数字,并且可以选择允许一个句点和 1-2 位数字。

^\d{1,3}(\.\d{1,2})?$

以上所有内容,但在此之前或之后不得有任何其他内容。确保您 .trim() 您的输入以消除之前和之后的任何空格。

这将允许“0” - “999”。它还将允许“0.0”、“0.00”和“999.99”,但不允许“0”。 (小数点后必须至少有一位)。

【讨论】:

    猜你喜欢
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    相关资源
    最近更新 更多