题
我试图找到一块regex相匹配的货币价值。
我想要的比赛只有数字和1小数点,即
允许
- 10
- 100
- 100.00
不允许
- 字母字符
- 100,00
- +/- 100
我有搜索和试过不少没有任何运气。
希望你可以告诉
解决方案
if (preg_match('/^[0-9]+(?:\.[0-9]+)?$/', $subject))
{
# Successful match
}
else
{
# Match attempt failed
}
侧注意 :如果你想要限制如何许多的小数位你想,你可以做像这样的东西:
/^[0-9]+(?:\.[0-9]{1,3})?$/im
所以
100.000
将匹配,而
100.0001
习惯。
如果你需要任何进一步的帮助,发表评论。
PS 如果你可以,使用数字格式张贴上。当地职能的总是更好地(和更快的),否则这一解决方案将为您服务。
其他提示
这个怎么样
if (preg_match('/^\d+(\.\d{2})?$/', $subject))
{
// correct currency format
} else {
//invalid currency format
}
你也许想要考虑其他替代品的使用regex.
例如,有的 NumberFormatter
级,这提供了灵活的数量和货币 析 和 格式化, 与建立在国际化进程的支持。
它建成PHP5.3和后来的,并可作为扩展在早期版本的PHP5.
试试这个经常的表达:
^(?:[1-9]\d+|\d)(?:\.\d\d)?$
不隶属于 StackOverflow