我需要一个正则表达式来验证货币。允许的值为:
1209
1889.0
578247.00
75646.50
But not 44565.12
逗号后面的第二个数字必须为0.可用的货币范围是0.1-9999999.9。 谢谢你的帮助。
答案 0 :(得分:1)
使用此模式:([1-9]\d{,6}|0)(\.\d0?)?
使用这种模式1234.2将被允许。它可以吗?
我编辑了模式,看一看
如果在点之前有其他数字,则第一个数字不能为0。因此,数字必须以非零数字开头,并且在第一个点之前和点之前最多可以有6个数字,或者在点之前只能有零个数字(此部分([1-9]\d{,6}|0)
)。
\d0?
表示一位数,之后可能为零。 \.
只是一个点。
答案 1 :(得分:0)
正如其他人所说,正则表达式不是处理数字的最佳方法。
如果需要,您可以在下面的代码中添加额外的简单范围检查,这比使用regexps尝试执行此操作要快得多
<?php
$a = array(
1209,
1889.0,
578247.00,
75646.50,
44565.12
);
foreach ($a as $b) {
echo "$b - ";
echo ($b*100 % 50) == 0 ? 'PASS' : 'FAIL';
echo PHP_EOL;
}