如何在PHP中编写正则表达式来查找价格/美元值?

时间:2011-09-13 01:50:12

标签: php regex

如果我想在页面上找到所有价格,那么PHP正则表达式是什么?

所以我的页面有类似的内容:

2006 Ford F-250 Lariat - $20995

2005 BMW X3 3.0i***Silver SUV A Must SEE!#($(******* - $18950

2009 Chevrolet Impala LT - $15688

如何编写正则表达式来搜索$ +之后的任意数量的数字?

5 个答案:

答案 0 :(得分:5)

preg_match_all("#- (\$\d+)#",$txt,$matches);
print_r($matches);

匹配小数:

preg_match_all("#- (\$\d+(?:\.\d+)?)#",$txt,$matches);

答案 1 :(得分:0)

我的尝试:

$regex = "@(\$[\.0-9]+)@";

答案 2 :(得分:0)

试试:

\$[0-9]+(\.[0-9]+)?

这将匹配$ 4545和$ 4545.45

答案 3 :(得分:0)

preg_match_all('/(\$\d{1,3}(,\d{3})*(\.\d{2})?)/', $page, $matches);

这适用于$999$999.99格式,有或没有分隔符。

答案 4 :(得分:0)

这是正确的正则表达式,用于匹配带有或不带分数的$的数字,带或不带分隔符。在数字之后需要一个空格或行的结尾。

\$(?:\d{1,3}(,\d{3})*+|\d+)(?:\.\d{1,2})?(?=\s|$)

here on Regexr

这将匹配

  

$ 1
  $ 1234
  $ 1234567个
  $ 1.25
  $ 1234
  $ 1234.12
  $ 1,123.1
  $ 1,123.12
  $ 12,123.1
  $ 123,123.12
  $ 123,123,123.12

但不是

  

$ 1,12.12
  $ 1.123
  $ 1,1234
  $ 0.12