【问题标题】:How can I check for the correct location of commas in a number entered by a user?如何检查用户输入的数字中逗号的正确位置?
【发布时间】:2009-08-20 18:31:53
【问题描述】:

我正在寻找一种检查用户输入的数字的好方法,以确保可选逗号的正确位置。

例如

1,000,000.00 = correct
1000000      = correct
1,00,000.00  = incorrect
,100,000     = incorrect

所以看来我需要检查逗号左侧是否至少有一个数字,逗号右侧是否有 3 个数字,或者是否有 RegEx 方法可以做到这一点?

【问题讨论】:

  • 谁在乎?逗号是为了让人类读者更容易理解一个数字有多大……而不是华盛顿特区关心政客。

标签: javascript regex number-formatting


【解决方案1】:
/^(?:\d+|\d{1,3}(?:,\d{3})*)(?:\.\d+)?$/

【讨论】:

    【解决方案2】:

    你打算用这个做什么?或者换一种说法,为什么要关心?为什么不直接去掉所有逗号并将其转换为数字类型?

    【讨论】:

    • 是的,这也是我的感觉……这听起来有点像银行网站用来防止您输入没有两位小数的数字的烦人支票。虽然我想如果您预计来自国际用户的一些流量,在去除逗号之前检查“10,00”可能很有用......
    • 我有大约 1 小时的时间在现有验证中实现一些东西,并使用了类似于上面第一个答案的东西但我同意你的评论,现在我有更多的时间来处理这个问题我要实现什么。
    【解决方案3】:

    查看此网站:http://blog.stevenlevithan.com/archives/commafy-numbers

    这里是sn-p的代码:

    String.prototype.commafy = function () {
        return this.replace(/(^|[^\w.])(\d{4,})/g, function($0, $1, $2) {
            return $1 + $2.replace(/\d(?=(?:\d\d\d)+(?!\d))/g, "$&,");
        });
    }
    
    Number.prototype.commafy = function () {
        return String(this).commafy();
    }
    

    您可以做的是替换所有逗号,然后使用此代码自己添加逗号。

    希望对您有所帮助。

    【讨论】:

    • 验证还有很长的路要走,但话说回来,为什么继续修复它?您只是在验证格式,而不是内容。 +1 开箱即用。
    【解决方案4】:

    Here’s a pattern 回答了你的问题。那里还有许多其他与数字相关的模式,包括可维护的模式——这似乎没人担心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多