我需要检查一个值是否为数字,并且可选地包含逗号。
我试过
var input=3433;
var pattern=/^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$/;
pattern.test(input);
但它总是让我虚假;
我不想使用$.isNumeric
,因为它不检查逗号。
答案 0 :(得分:1)
假设您将逗号用作千位分隔符,最简单的方法是在转换时删除逗号:
var num = +str.replace(/,/g, '');
if (!isNaN(num)) {
// It's a valid number
}
如果你的语言环境使用.
作为千位分隔符而,
作为小数点(正如你的正则表达式似乎暗示的那样),因为JavaScript总是以相反的方式使用它们,我们还有更多要改变的地方首先在字符串中:
var num = +str.replace(/\./g, '').replace(/,/g, ".");
if (!isNaN(num)) {
// It's a valid number
}
答案 1 :(得分:0)
由于点的原因,您的样本var输入与正则表达式不匹配 你可以这样做:
var input=3433;
var pattern=/^[1-9]\d{0,2}(\.?\d{3})*(,\d+)?$/;
// the dot is optional __^
pattern.test(input);
此正则表达式将匹配:
123
1234
1.234
123,45
1234,567
1.234,56
1.234.567,89
答案 2 :(得分:0)
我必须以不同的方式处理字符串和字符串数字。 因此,我必须使用语言环境约定来测试字符串是否为字符串数字(不是有效数字)。
我粗鲁的解决方案是:
var num = +str.replace(/\./g, '').replace(/,/g, '');
if (!isNaN(num))...
这适用于美国、欧元语言环境。关于“有效号码”的控制是在汽车我想向用户发送详细的警告/错误消息之后完成的。