在一个美元符号旁边抓取数字,可选数千位和小数

时间:2015-11-18 23:54:18

标签: php regex

我试图获取一个数字,其格式为$ 5,000.23,以及$ 22.43或$ 3,000

这是我的正则表达式,这是在PHP中。

preg_match('/\$([0-9]+)([\.,]*)?([0-9]*)?([\.])?([0-9]*)?/', $blah, $blah2);

似乎匹配格式为$ 5,500.23的数字完全没问题,但它似乎与其他任何数字都不匹配,比如0美元。

如何让一切都可选?不应该分组()并使用问号吗?

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

\$[\d,.]*[\d]

Regular expression visualization

Debuggex Demo

特定PHP示例:

$re = "/\\$[\\d,.]*[\\d]/"; 
$str = "\$1 klsjdfgsjdfg \$100 kjdfhglsjdfg \$1,000 jljsdfg \$1,000.00 ldfjhsdf"; 

preg_match_all($re, $str, $matches);

Regex 101 Demo