Javascript jQuery正则表达式测试

Javascript jQuery正则表达式测试,javascript,jquery,regex,Javascript,Jquery,Regex,我试图根据正则表达式验证一个值,以检查数字是否为十进制(小数点后只有2位)/整数。其余的应该是无效的 我在这里使用了建议的正则表达式: 但当我将其包含在jquery正则表达式函数中时,它似乎不起作用: function checkRegexp( o, regexp, n ) { if ( !( regexp.test( o.val() ) ) ) { o.addClass( "ui-state-error" ); upda

我试图根据正则表达式验证一个值,以检查数字是否为十进制(小数点后只有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" );
我做错了什么


谢谢,

您可能希望使正则表达式更加精确,
/^-?\d+(\。\d{1,2})?$/
。否则,它将只测试字符串是否包含数字


编辑:更新正则表达式以覆盖负数。

您可能希望使该正则表达式更加精确,
/^-?\d+(\。\d{1,2})?$/
。否则,它将只测试字符串是否包含数字


编辑:更新正则表达式以覆盖负数。

你所说的“它似乎不起作用”是什么意思?我刚刚测试了您的示例,它按预期工作

唯一的问题是您试图在字符串中的任何位置找到数字模式。这意味着您的regexp接受类似于
abc3.4def
的内容

但是,我假设您希望字符串只包含一个十进制数?然后,您必须在开始和结束处添加
^
$
符号,以告诉
test
您希望匹配整个字符串。因此,regexp变成:

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

这是你的问题吗?如果没有,我可能会发布一个对我有用的完整网页,如果它对你有帮助的话。

你说的“它似乎不起作用”是什么意思?我刚刚测试了您的示例,它按预期工作

唯一的问题是您试图在字符串中的任何位置找到数字模式。这意味着您的regexp接受类似于
abc3.4def
的内容

但是,我假设您希望字符串只包含一个十进制数?然后,您必须在开始和结束处添加
^
$
符号,以告诉
test
您希望匹配整个字符串。因此,regexp变成:

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

这是你的问题吗?如果没有,我可以发布一个完整的网页,如果对你有帮助的话,它对我来说还可以。

我很确定你想使用下面的正则表达式

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

问题是{1,2}在小数点后的1到2位之间匹配,但如果有更多的匹配,则不会失败。这是预期的行为

我很确定您希望使用以下正则表达式

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

问题是{1,2}在小数点后的1到2位之间匹配,但如果有更多的匹配,则不会失败。这是预期的行为

bValid
来自哪里?如果为false,则永远不会执行check函数。在本例中,bValid为true。bValid的来源是什么?如果为false,则永远不会执行check函数。在本例中,valid为true。