【问题标题】:jQuery Validate money field, accept spaces?jQuery 验证货币字段,接受空格?
【发布时间】:2015-04-10 14:19:30
【问题描述】:
我有一个用于货币字段的自定义验证器,它接受像
这样的值
12,00$
122.04$
12123123
现在,我想让它接受这些价值观:
1 200$
1 200,22$
所以接受空格。不幸的是,我不太擅长正则表达式
这是我的自定义验证器:
$.validator.addMethod("money", function(value, element) {
return this.optional(element) || value.match(/^\$?(\d+(?:[\.\,]\d{1,2})?)\s?\$?$/);
}, "Not valid...");
感谢您的帮助
【问题讨论】:
标签:
jquery
regex
jquery-validate
【解决方案1】:
你可以使用这个正则表达式:
^\$?(\d+(?:\s\d+)*(?:[\.\,]\d{1,2})?)\s?\$?$
我只在您的正则表达式中添加了(?:\s\d+)*,以允许在初始数字后有任意数量的带有空格的数字。请注意,您不必在字符类[\.\,] 中转义. 和,(它等于[.,])。
这是demo。
试试
$.validator.addMethod("money", function(value, element) {
return this.optional(element) || value.match(/^\$?(\d+(?:\s\d+)*(?:[.,]\d{1,2})?)\s?\$?$/);
}, "Not valid...");
【解决方案2】:
你可以使用下面的正则表达式。
^\$?\d+(?:[ ,]\d+)*(?:\.\d+)?\$?$
DEMO