Php 货币的正则表达式出错

Php 货币的正则表达式出错,php,regex,Php,Regex,我有一个正则表达式,它删除了所有内容,只留下数字和一个点。它不适用于大数字 当投入5.99英镑时,它就起作用了。我得到了5.99英镑 但对于更大的数字,比如48.49英镑,我得到了0.49英镑 我想让这个数字达到100.99英镑 /[^0-9.]+([0-9]{2}){0,1}/ 输入类似于“此成本为25.95英镑。” 结果应该是25.95,您可以使用 '~(\d+(?:\.\d+))|.~s' 并替换为\1 看 这个正则表达式替换将只在字符串中保留整数和浮点数 见: 如果在正则表达式中明确

我有一个正则表达式,它删除了所有内容,只留下数字和一个点。它不适用于大数字

当投入5.99英镑时,它就起作用了。我得到了5.99英镑 但对于更大的数字,比如48.49英镑,我得到了0.49英镑

我想让这个数字达到100.99英镑

/[^0-9.]+([0-9]{2}){0,1}/
输入类似于“此成本为25.95英镑。”

结果应该是25.95,您可以使用

'~(\d+(?:\.\d+))|.~s'
并替换为
\1

这个正则表达式替换将只在字符串中保留整数和浮点数

见:


如果在正则表达式中明确表示只希望匹配2位数字,则得到的结果就是这样。无法看到该结果如何返回
,因为您明确排除了
。在您的
[]
char类中使用
^
,它在替换(“/(\d+(?:\。\d+))。/”,“,$rest2)”之前不起作用;结果是,它起作用了。什么是rest2美元?您是否使用了
$re='~(\d+(?:\。\d+)\124;.~ su'
$re = '~(\d+(?:\.\d+))|.~su'; 
$str = "this costs £25.95."; 
$result = preg_replace($re, '\1', $str);
echo $result;
// => 25.95