正则表达式货币错误

时间:2016-02-04 19:09:26

标签: php regex

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

EG。当5.99英镑投入使用时我会得到5.99 但对于像48.49英镑这样的大数字,我得到了.49

我希望这可以使用大到100.99英镑的数字

/[^0-9.]+([0-9]{2}){0,1}/

输入类似于“这需要25.95英镑。”

结果应为25.95

1 个答案:

答案 0 :(得分:2)

您可以使用

'~(\d+(?:\.\d+))|.~s'

并替换为\1

请参阅regex demo

此正则表达式替换将仅保留字符串中的整数和浮点数。

请参阅IDEONE demo

$re = '~(\d+(?:\.\d+))|.~su'; 
$str = "this costs £25.95."; 
$result = preg_replace($re, '\1', $str);
echo $result;
// => 25.95