【问题标题】:Check for numeric value with optional commas javascript使用可选逗号 javascript 检查数值
【发布时间】:2015-06-08 12:16:55
【问题描述】:

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

我试过了

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

但它总是给我假的;

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

【问题讨论】:

  • 您的意思是逗号而不是点?如果是这样,则意味着/^[1-9]\d{0,2}([\.,]\d{3})*$/
  • 其实我需要检查数字 399,090.00 但逗号和点都是可选的。
  • @user:您是否处于. 是千位分隔符且, 是小数点的区域?从正则表达式来看,你似乎是。例如,你写一千二十三半是1,023.5还是1.023,5
  • 你的意思是说39,900.00
  • @LShetty:初始三元组的第一个数字由[1-9] 指定,因此399,090.00 可以工作,只是正则表达式似乎是向后的.,

标签: javascript jquery regex


【解决方案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
}

【讨论】:

  • @LShetty:哈哈!确实。 :-)
【解决方案2】:

我必须以不同的方式处理字符串和字符串数字。 所以我必须使用语言环境约定来测试一个字符串是否是一个字符串数字(不是一个有效数字)。

我粗鲁的解决方案是:

var num = +str.replace(/\./g, '').replace(/,/g, '');
if (!isNaN(num))...

这适用于美国、欧洲地区。关于“有效号码”的控制完成后,我想向用户发送详细的警告/错误消息。

【讨论】:

    【解决方案3】:

    由于点,您的示例 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多