使用可选的逗号javascript检查数值

时间:2015-06-08 12:16:55

标签: javascript jquery regex

我需要检查一个值是否为数字,并且可选地包含逗号。

我试过

var input=3433;
var pattern=/^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$/;
pattern.test(input);

但它总是让我虚假;

我不想使用$.isNumeric,因为它不检查逗号。

3 个答案:

答案 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))...

这适用于美国、欧元语言环境。关于“有效号码”的控制是在汽车我想向用户发送详细的警告/错误消息之后完成的。