2011-02-26 201 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})?$/ 

的问题,但没有按”如果还有更多的话,就不会失败这是预期的行为。