2011-12-17 137 views
3

我需要使用jQuery將字段與正則表達式匹配。目前我正在使用:正則表達式(用於jQuery)驗證帶有2個小數點的正數

onsubmit: function (settings, td) { 
      //select integers only 
      var intRegex = /[0-9 -()+]+$/; 
      var input = $(td).find('input'); 
      var original = input.val(); 

      if (original <= 0) { 
       Alert('The amount should be bigger than 0'); 
       return false; 
      } 
      if (!original.match(intRegex)) { 
       Alert('Please enter a valid number'); 
       return false; 
      } 
      else { 
       return true; 
      } 
     } 

像​​這樣的字符串未通過檢查。但無效字符如@#$%"/"確實會通過檢查,這會在我的方法中導致錯誤。

我要尋找的正則表達式其中:

匹配:1.20, 1, 2.00, 3.1

不匹配:我是通過正則表達式庫瀏覽-1.2, abc, 1/2, $, @#$%

,但如果我把(^\d*\.?\d*[0-9]+\d*$)|(^[0-9]+\d*\.\d*$)我的劇本里,我得到了語法錯誤...

+2

提示:這是一個正則表達式測試一個不錯的網站:http://gskinner.com/RegExr/ – Richard 2011-12-17 23:39:39

+0

感謝您的介紹:) – shennyL 2011-12-17 23:45:13

回答

5

使用:

var intRegex = /^\d+(?:\.\d\d?)?$/; 

這應該工作。

+0

我需要補充?如果我把var intRegex =^\ d +(?:。\ d \ d)$; 謝謝! – shennyL 2011-12-17 23:29:13

+0

查看帖子編輯,我包括var初始化加上我發現的錯誤 – fge 2011-12-17 23:30:52

+0

感謝您的善良和快速幫助! – shennyL 2011-12-17 23:43:48

2
var regxp = /^\d+(\.\d{1,2})?$/; 
+0

感謝您的親切幫助:) – shennyL 2011-12-17 23:44:21

+0

@shennyL不客氣。 – aefxx 2011-12-18 00:07:50

5

這就是爲什麼你用你原來的正則表達式得到誤報:

/[0-9 -()+]+$/ 
    ^^^ 

我強調形式從空格字符(U+0020)到左括號(U+0028)的範圍內的部分,使您的正則表達式相當於這個:

/[0-9 !"#$%&'()+]+$/ 

如果你想匹配一個連字符,你需要用一個反斜槓或將它放在beg局或組的結束,就像這樣:

/[0-9()+-]+$/ 

此外,如果通過「正則表達式庫」你的意思是RegExLib.com,我不相信任何正則表達式,我發現那裏。您發佈的一個是一個很好的例子:

/(^\d*\.?\d*[0-9]+\d*$)|(^[0-9]+\d*\.\d*$)/ 

首先,它可能已被寫入更簡潔:

/^(\d*\.?\d+|\d+\.\d*)$/ 

其次,它匹配像123.000000.0000000琴絃,你大概別不想要。如果您只想匹配正數,則必須確保字符串中至少有一個非零數字,無論是在小數點之前還是之後。下面是其中一種做法:

/^(?:[1-9]\d*(?:\.\d\d?)?|0\.[1-9]\d?|0\.0[1-9])$/ 
+0

....怎麼說...哇! +100 – 2011-12-18 09:29:47

+0

正則表達式有很多東西需要知道!感謝分享 :) – shennyL 2011-12-18 10:25:25