2011-12-17 66 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