用于验证货币的PHP正则表达式


PHP regex for validating currency

我需要一个正则表达式来验证货币。允许值为:

1209
1889.0
578247.00
75646.50
But not 44565.12

逗号后的第二个数字必须为0。可用货币范围为0.1-9999999.9。谢谢你的帮助。

使用此模式:([1-9]'d{,6}|0)('.'d0?)?
使用这种模式,1234.2将被允许。可以吗?我编辑了图案,看一看
如果点之前还有其他数字,则第一个数字不能为0。所以数字必须以一个非零数字开始,并且在第一个点之后和点之前最多可以有6个数字,或者在点之前只能有零(这个部分([1-9]'d{,6}|0))。'd0?表示一个数字,后面可能有一个零。'.只是一个点。

正如其他人所说,正则表达式不是处理数字的最佳方式。

如果需要,您可以在下面的代码中添加额外的简单范围检查,这将比使用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;
}