我试图获取一个数字,其格式为$ 5,000.23,以及$ 22.43或$ 3,000
这是我的正则表达式,这是在PHP中。
preg_match('/\$([0-9]+)([\.,]*)?([0-9]*)?([\.])?([0-9]*)?/', $blah, $blah2);
似乎匹配格式为$ 5,500.23的数字完全没问题,但它似乎与其他任何数字都不匹配,比如0美元。
如何让一切都可选?不应该分组()并使用问号吗?
答案 0 :(得分:1)
这应该可以解决问题:
\$[\d,.]*[\d]
特定PHP示例:
$re = "/\\$[\\d,.]*[\\d]/";
$str = "\$1 klsjdfgsjdfg \$100 kjdfhglsjdfg \$1,000 jljsdfg \$1,000.00 ldfjhsdf";
preg_match_all($re, $str, $matches);