正则表达式过滤浮点

时间:2012-02-10 19:02:06

标签: php regex

考虑以下字符串:

I bought 70 apples for $15.45, 2 cars for 23.000 each

我正在寻找可以返回以下结果的正则表达式:

I bought {NUMBER:70} apples for ${NUMBER:15.45}, {NUMBER:2} cars for 
{NUMBER:23.000} each

我相信我想要过滤的范围是一个带有(最多)6位数的浮点数。我不知道是否必须指定。

非常感谢任何帮助:)

3 个答案:

答案 0 :(得分:1)

试试这个:

$text = preg_replace("((?<!{NUMBER:)([0-9]+(?:\.[0-9]+)?)(?!}))","{NUMBER:$1}",$text);

这将按照您的要求执行,但还包括检查以确保该号码尚未放入{NUMBER:#}容器中;)

没有检查:

$text = preg_replace("([0-9]+(?:\.[0-9]+)?)","{NUMBER:$0}",$text);

答案 1 :(得分:0)

看一下这个:http://regexr.com?2vvpq

[0-9]+\.[0-9]{0,6}

答案 2 :(得分:0)

此表达式将解决您的问题:

([\d.$])*