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

时间:2012-03-22 06:08:04

标签: php regex validation

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

1209
1889.0
578247.00
75646.50
But not 44565.12

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

2 个答案:

答案 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;
}