2011-02-26 92 views
1

我試圖驗證一個值與正則表達式來檢查數字是否是一個十進制數(小數點後面只有2位數)/整數。其餘的應該是無效的。jQuery的正則表達式測試

我這裏使用的建議的正則表達式: Simple regular expression for a decimal with a precision of 2

但是,當我在我的jQuery的正則表達式的功能包括它,它似乎並沒有工作:

function checkRegexp(o, regexp, n) { 
     if (!(regexp.test(o.val()))) { 
      o.addClass("ui-state-error"); 
      updateTips(n); 
      return false; 
     } else { 
      return true; 
     } 
    } 

bValid = bValid && checkRegexp(o_buy, /\d+(\.\d{1,2})?/, "Buy field can only contain numbers, no currency please"); 

我在做什麼錯?

感謝,

+0

'bValid'從哪裏來?如果爲false,則檢查功能將不會執行 – 2011-02-26 10:38:57

+0

bValid在此示例中爲true。 – 2011-02-26 10:41:48

回答

1

你是什麼意思,「它似乎沒有工作」?我剛剛測試了您的示例,並且按預期工作。

唯一的問題是,您嘗試在字符串內的任意位置找到數字模式。這意味着您的正則表達式會接受類似abc3.4def的內容。

但是,我想你想要的字符串只包含一個十進制數?然後,您必須在開始和結束時添加^$符號,以告知test您要匹配整個字符串。所以正則表達式變爲:

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

這是您的問題?如果沒有,我可以發佈一個完全適合我的網頁,如果它對你有任何幫助的話。

3

你可能會想作出這樣的正則表達式更確切的一點,/^-?\d+(\.\d{1,2})?$/。否則,它只會測試字符串包含的一個數字。

編輯:更新了正則表達式以涵蓋負數。

0

我敢肯定你想使用你所擁有的是{1,2} 1到2位之間的小數點後符合以下正則表達式

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

的問題,但沒有按」如果還有更多的話,就不會失敗這是預期的行爲。