Javascript 仅为2个十进制数设置正则表达式+;dot+;带有jquery验证程序插件的逗号

Javascript 仅为2个十进制数设置正则表达式+;dot+;带有jquery验证程序插件的逗号,javascript,jquery,regex,jquery-validate,Javascript,Jquery,Regex,Jquery Validate,我用于执行客户端表单验证。它工作得很好。然而,我不知道确切的正则表达式,我无法实现我想要的 我想添加3个不同的正则表达式,以便根据用户在输入字段中输入的内容显示3条不同的消息: 正则表达式1检测它是否不是带有特定消息的数字 正则表达式2接受带有特定消息的小数点或逗号 带特定信息的点或逗号后的小数位数仅为2 有很多相关的问题,但我已经尝试了很多答案,所以效果不好 下面是一个工作片段 jQuery.validator.addMethod(“十进制”),函数(值,元素){ //验证十进制数 返回

我用于执行客户端表单验证。它工作得很好。然而,我不知道确切的正则表达式,我无法实现我想要的

我想添加3个不同的正则表达式,以便根据用户在输入字段中输入的内容显示3条不同的消息:

  • 正则表达式1检测它是否不是带有特定消息的数字
  • 正则表达式2接受带有特定消息的小数点或逗号
  • 带特定信息的点或逗号后的小数位数仅为2
有很多相关的问题,但我已经尝试了很多答案,所以效果不好

下面是一个工作片段

jQuery.validator.addMethod(“十进制”),函数(值,元素){
//验证十进制数
返回此.optional(element)| |/^([0-9]+[\.]?[0-9]?[0-9]?[0-9]?|[0-9]+)$/g.test(value);
},“请仅输入数字(格式0.00)”;
jQuery.validator.addMethod(“两位小数”,函数(值,元素){
//需要2个小数
返回此.optional(element)|//^(\d+(\\.\d{0,2})|(\d*(\.\d{1,2})))$/.test(value);
},“请在圆点后输入2个数字”);
// https://jqueryvalidation.org
$(“#测试表格”)。验证({
submitHandler:函数(表单){
表单提交();
},
//规则、选项等。,
onkeyup:函数(元素){
//“渴望”验证
这个,元素(元素),;
},
规则:{
十进制数字:{
要求:正确,
最小长度:1,
最大长度:10,
是的,
二位小数:对
}
},
信息:{
蒙坦特·迪蒙德:{
必填:“请输入一个数字”,
}
}
});

试验

十进制数


如果您只需要数字,或者只需要带coma
的十进制、
和带两个小数的点
分隔符

请参阅下面的代码片段:

let decimalMessage=”“;
jQuery.validator.addMethod(“十进制”),函数(值,元素){
设小数=/[^0-9.,]/g.test(值);
设decimalWithTwoDecimalNumber=/^\d+([,]\d{2})?$/.test(值);
if(十进制){
decimalMessage='请只输入数字(格式0.00)'
返回此.optional(元素);
}
if(带两位小数的小数)
decimalMessage='请在点后输入2个数字'
返回此值。可选(元素)| | decimalwithtwo decimalnumber
},函数(参数,元素){
返回小数信息
});
// https://jqueryvalidation.org
$(“#测试表格”)。验证({
submitHandler:函数(表单){
表单提交();
},
//规则、选项等。,
onkeyup:函数(元素){
//“渴望”验证
这个,元素(元素),;
},
规则:{
十进制数字:{
要求:正确,
最小长度:1,
最大长度:10,
是的,
}
},
信息:{
蒙坦特·迪蒙德:{
必填:“请输入一个数字”,
}
}
});

试验

十进制数


^\d+(?:[,]\d{1,2})?$
可以。您希望nmber始终带有点/coma和2个小数点,还是键入coma时出现这种情况,或者数字不带小数点,或数字小数点后带2个小数点dot@Spring当键入不带小数点的coma,或键入只有或多于2个小数点的数字时,会出现这种情况。用户还可以输入一个整数。我会将正则表达式组合成一个方法/规则,而不是试图使一个字段遵循两个不同的正则表达式规则。@Sparky如果将正则表达式组合成一个方法/规则,如何根据这些不同的情况显示不同的消息?几乎可以。我看到在点/逗号(例如:50.455)后有两个以上的数字的情况,消息应该是“请在点后输入两个数字”。好吧,我花了太多时间,但我现在只使用一个动态消息的方法检查:)