Jquery将输入验证为八个整数和两个小数
我尝试过这段代码,但我想我的正则表达式有一个错误,因为它总是Jquery将输入验证为八个整数和两个小数,jquery,regex,validation,Jquery,Regex,Validation,我尝试过这段代码,但我想我的正则表达式有一个错误,因为它总是true 除了正则表达式之外,我还遇到了keypress的问题,因为我在添加新字符之前测试值,我不想使用keyup,因为我不知道最后一个字符添加到了哪里(用户不会总是在输入字段的末尾输入字符) 我希望有一个好的解决方案,谢谢 $('.myInputField').keypress(function(){ var val = $(this).val(); var regexTest = /^[0-9]{0,8}[.][0-
true
除了正则表达式之外,我还遇到了keypress
的问题,因为我在添加新字符之前测试值,我不想使用keyup
,因为我不知道最后一个字符添加到了哪里(用户不会总是在输入字段的末尾输入字符)
我希望有一个好的解决方案,谢谢
$('.myInputField').keypress(function(){
var val = $(this).val();
var regexTest = /^[0-9]{0,8}[.][0-9]{0,2}|[0-9]{0,8}$/;
var ok = regexTest.test(val);
if(ok)
return true;
else
return false;
我想你可能想要这样的正则表达式:
/^\d{0,8}(\.\d{0,2})?$/
您使用的是
而不是\。
,但是
将匹配任何字符
靠近末尾的?
允许您拥有或不拥有“.12”
\d
是限制数字的捷径
请考虑不要使用<代码>按键>代码>此-<代码> KEYUP (更好)或<代码>更改(最佳)将是其他选项考虑。
如果你需要“极端响应”的反馈(不能只使用<代码>变更<代码>),考虑这样做(请使用比我在例子中使用的简单CSS更好的方法):
注意:我还更改了代码,因此如果您在输入中输入
,我们希望您在小数点后至少输入一位数字。如果您确实不想进行此编辑,请将\d{1,2}
更改为\d{0,2}
,您知道如何克服按键问题吗?可以使用change()代替kepress()每当文本框的值被更改时,该命令就会运行hanks,但如果输入无效,我不想让用户从输入字段中调出焦点,因此我不能使用change。
$('.myInputField').keyup(function(e){
var val = $(this).val();
var regexTest = /^\d{0,8}(\.\d{1,2})?$/;
var ok = regexTest.test(val);
if(ok) {
$(this).css('background-color', 'green');
} else {
$(this).css('background-color', 'red');
}
});