Php 货币的正则表达式出错
我有一个正则表达式,它删除了所有内容,只留下数字和一个点。它不适用于大数字 当投入5.99英镑时,它就起作用了。我得到了5.99英镑 但对于更大的数字,比如48.49英镑,我得到了0.49英镑 我想让这个数字达到100.99英镑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 看 这个正则表达式替换将只在字符串中保留整数和浮点数 见: 如果在正则表达式中明确
/[^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