正则表达式preg_match问题与逗号

时间:2013-10-21 02:11:21

标签: php regex preg-match preg-match-all

当我的金额如下所示时,这是我的pre_match代码:$ 99.00并且可以正常工作

if (preg_match_all('/[$]\s\d+(\.\d+)?/', $tout, $matches))
{ $tot2 = $matches[0];
$tot2 = preg_replace("/\\\$/", '', $tot2);}

我需要做同样的事情,看起来像这样(用逗号):$ 99,00

感谢您的帮助(更改逗号点不起作用,有一个“逃避”的事情,我不明白......

Idealy我需要preg_match任何看起来像带有点或逗号的数字以及有或没有美元符号的数字之前或之后(我知道,这是很多要问:)因为在结果表单上我想扫描有电话和街道号码......

更新(出于某种原因,我无法对回复发表评论):为了正确测试,我需要用点预先存放逗号(因为我们处理的是和,我不认为可以对带有逗号的数字进行计算它)。

所以为了澄清我的问题,我应该说:我需要转换,让我们说“200,24美元”到“200.24”。 (可能是介于0.10到1000.99之间的金额):

    $tot2 = preg_replace("/\\\$/", '', $tot2);}

(这段代码只处理$(它的工作原理),我需要调整以处理(,)for(。)的更改)

3 个答案:

答案 0 :(得分:2)

不,使用,代替\.效果非常好。

只是您的输入不包含美元符号与$ 99,00之间的空格,如. - 使用来源。

使\s可选。

答案 1 :(得分:0)

怎么样:

$str='$ 200,24';
echo str_replace(array('$',',',' '), array('','.',''), $str);

<强>输出:

200.24

答案 2 :(得分:-1)

更换。字符类[,。]的字符,包括点(。)和逗号(,)

'/[$]\s\d+([.,]\d+)?/'

编辑:评论正确,正则表达式已修复。