用小数到百位数的千位分组验证数字
Posted
技术标签:
【中文标题】用小数到百位数的千位分组验证数字【英文标题】:Validate a number with grouped thousands with decimal to the hundreth 【发布时间】:2010-10-25 15:05:06 【问题描述】:寻找一种简单的方法(函数/正则表达式)来验证包含数千个分组的数字。
示例编号:
.00 - 999.00 should validate
1,000.00 should validate
100,000.00 etc... should validate
100,000,000,000,000.00 should validate
现在我已经看到了number_format(),但这格式的数字无法验证。
我想使用 RegEx,但不知道如何使用。
preg_match(/^[\d]\,?\.[\d]2$/, $number);
但这不起作用。
我也查看了money_format(),但这是格式而不是验证。
【问题讨论】:
哪些东西不应该验证,1000? 1,000.000? 是必须提交这些数字的用户吗? 1,000.000 不应验证,因为小数点显示的是千分之一数 是的,用户将输入这些数字 那为什么不让他们提交简单的数字呢? 【参考方案1】:^(?:\d1,3(?:,\d3)*)?\.\d2$
【讨论】:
这个模式中的冒号有什么作用? 谢谢,只有一个问题。我知道?使字符可选,但这对表达式有什么影响: @Ben, @Phill:你是指?:
部分吗?他们只是意味着括号中的组是非捕获的。当您实际上不需要捕获文本时,使用非捕获组可以提供(非常小的)性能改进。 regular-expressions.info/brackets.html
是的。感谢您的洞察力和正则表达式【参考方案2】:
就在我的脑海中:
preg_match('%^[\d,]*\.\d2$%', $number);
这将匹配您提到的所有数字(实际上:每个字符串都以数字和逗号的组合开头并以“.”和数字结尾)。
同样,这是未经测试的,但应该可以工作。
【讨论】:
这将允许 1000.00 应采用以下格式:1,000.00 这也将允许:1,0,0.00【参考方案3】:如果你有 php5.3+,你可以试试 Intl number formatter:
http://www.php.net/manual/en/numberformatter.parse.php
【讨论】:
感谢我正在运行 5.x,但这不是格式问题,而是验证问题。感谢您的努力以上是关于用小数到百位数的千位分组验证数字的主要内容,如果未能解决你的问题,请参考以下文章
输入一个4位数的正整数,用C#编写程序,输出这个数的千位、百位、十位和个位,怎么写?
15、pandas的设置数字格式,小数位数、百分号、千位分隔符