我试图找到一块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)?$
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top