如何检查用户输入的数字中逗号的正确位置?

Posted

技术标签:

【中文标题】如何检查用户输入的数字中逗号的正确位置?【英文标题】: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 方法可以做到这一点?

【问题讨论】:

谁在乎?逗号是为了让人类读者更容易理解一个数字有多大……而不是华盛顿特区关心政客。 【参考方案1】:
/^(?:\d+|\d1,3(?:,\d3)*)(?:\.\d+)?$/

【讨论】:

【参考方案2】:

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

【讨论】:

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

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

这里是sn-p的代码:

String.prototype.commafy = function () 
    return this.replace(/(^|[^\w.])(\d4,)/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 回答了你的问题。那里还有许多其他与数字相关的模式,包括可维护的模式——这似乎没人担心。

【讨论】:

以上是关于如何检查用户输入的数字中逗号的正确位置?的主要内容,如果未能解决你的问题,请参考以下文章

数字游戏

用户在输入框中输入小数点时逗号消失

munbergame

如何使正则表达式在每个单词之间强制使用逗号?

在 php 中检查给定字符串/数字中 coma 的有效性

要求做个java程序用户输入数字逗号隔开, 计算下面的公式 多谢了