2012-12-21 58 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」。 (小數點後必須至少有數字)。