2012-12-21 22 views
1
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; 
    } 
} 

我的正则表达式在这里似乎并没有工作。你能看到问题是什么吗?窗体Validaton代码不起作用

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

+0

2位小数点?像1.2.3这样的字符串应该通过? – shift66

+0

对不起,我的意思是1.23或232.49会通过,但不是12.1.2 – JoseBazBaz

+0

哈...我是个白痴。我的解决方案是PHP,而不是JavaScript。回到我的床上! –

回答

1

您的正则表达式不匹配单个或双位数字。

试试这个:

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

它没有工作。 :P – JoseBazBaz

+0

您能否提供一些输入/输出,以便我们可以看到发生了什么问题? –

+0

我通过萤火虫控制台运行了几个输入,它现在正在工作(在我编辑之后)。之前的问题是,正则表达式不匹配整个字符串,只是它的一部分(因此^现在开始) –

0
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})?$ 

以上都是,但在之前或之后不允许有任何其他内容。确保你的输入可以消除前后任何空白。

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