jQuery 验证货币字段,接受空格?

jQuery Validate money field, accept spaces?

我有一个货币字段的自定义验证器,它接受像

这样的值
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...");

您可以使用这个正则表达式:

^$?(\d+(?:\s\d+)*(?:[\.\,]\d{1,2})?)\s?$?$

我只将 (?:\s\d+)* 添加到您的正则表达式中,以允许在初始数字后有任意数量的带空格的数字。请注意,您不必在字符 class [\.\,] 中转义 .,(它等于 [.,])。

这里是demo.

尝试

$.validator.addMethod("money", function(value, element) {
    return this.optional(element) || value.match(/^$?(\d+(?:\s\d+)*(?:[.,]\d{1,2})?)\s?$?$/);
}, "Not valid...");

您可以使用下面的正则表达式。

^$?\d+(?:[ ,]\d+)*(?:\.\d+)?$?$

DEMO