我写了一个十进制验证方法来验证texbox中的文本:
$.validator.addMethod("decimalCheck", function(value) {
var v = new RegExp("^\d*[0-9](\.\d*[0-9])?$", "g");
return v.test(value);
}, "Error here");
第一次,我将“12,34”字符串输入到文本框并显示错误消息。 第二次,我将“12”字符串输入到文本框中。这是有效的字符串,但错误消息不会隐藏。
请帮我解决 谢谢&最好的问候
答案 0 :(得分:3)
尝试这个(也是稍微优化的具有相同功能的正则表达式)
$.validator.addMethod("decimalCheck", function(value) {
var v = /^\d+(\.\d+)?$/;
return v.test(value);
}, "Error here");
你的问题是你需要自己逃避反斜杠(双重转义)否则正则表达式构造函数实际上传入了这个字符串("^d*[0-9](.d*[0-9])?$"
)
var v = new RegExp("^\\d*[0-9](\\.\\d*[0-9])?$", "g");
顺便说一句。在此处使用g
标志可能会导致意外结果。不管怎样,最好不要使用^
和$
。