Javascript jQuery正则表达式测试
我试图根据正则表达式验证一个值,以检查数字是否为十进制(小数点后只有2位)/整数。其余的应该是无效的 我在这里使用了建议的正则表达式: 但当我将其包含在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
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。