我正在开发 PHP 应用程序。我需要验证字符串是否可用作货币值。我想验证以下内容:
$5.00
5
5.00
£5.00
我希望模式足够自由以接受合理的字符串。我还希望它接受货币符号;但是,为了验证货币,它可以是任何字符,因为我最终会将值存储为两位小数 float 。因此,“$5.00”或“USD 5.00”存储在数据库中时将变为“5.00”。我目前正在使用以下内容:
preg_match('/^[0-9]*\.?[0-9]+$/',$value)
它适用于“5”或“5.00”,但不考虑货币符号。如何调整它以允许货币符号?
谢谢!
编辑:根据下面的评论,看起来我的正则表达式将允许太多小数。你也能帮我解决这个问题吗?
最佳答案
要允许所有货币符号,您需要使用 Unicode Character Properties
\p{Sc}
或 \p{Currency_Symbol}
:任何货币符号。
尝试一下这个:
$value=preg_replace('/^(\p{Sc}?\d*)((\.|,)\d\d\d)?\d*$/u','$1$2',$value);
但是如果您期望输入的数字,最好使用 form用户从可选列表中指定货币,只需注意用户是否只会输入数字,PAYPAL 就是这样做的。
关于php - 自由的货币正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6893600/