PHP正则表达式数字格式


PHP regex number formatting

我的正则表达式去掉了除最后一个点之外的所有点。太棒了
但我希望的是,只剥离"千"个分离器,而不是"浮动"的分离器。我想浮动以一个或两个数字结尾
我无法更改输入格式。

知道如何扩展正则表达式吗?

<?php
print_r(preg_replace('/'.(?=.*'.)/', '', "1.234.20")); // works
echo "<hr />";
print_r(preg_replace('/'.(?=.*'.)/', '', "1234.20")); // works
echo "<hr />";
print_r(preg_replace('/'.(?=.*'.)/', '', "1234.2")); // works
echo "<hr />";
print_r(preg_replace('/'.(?=.*'.)/', '', "1234.217")); // works
echo "<hr />";
print_r(preg_replace('/'.(?=.*'.)/', '', "1.000.234.20")); // works
echo "<hr />";
print_r(preg_replace('/'.(?=.*'.)/', '', "1.234")); // buuuh, 1234 would be correct
?>

如果假设每千个分隔符后面正好跟有3位数字,可以这样做
这不包括浮点值以3位或更多数字结尾的情况。。。

<?php
print_r(preg_replace('/'.([0-9]{3})/', '$1', "1.234.20")); // 1234.20
echo "<hr />";
print_r(preg_replace('/'.([0-9]{3})/', '$1', "1234.20")); // 1234.20
echo "<hr />";
print_r(preg_replace('/'.([0-9]{3})/', '$1', "1234.2")); // 1234.2
echo "<hr />";
print_r(preg_replace('/'.([0-9]{3})/', '$1', "1234.217")); // 1234217
echo "<hr />";
print_r(preg_replace('/'.([0-9]{3})/', '$1', "1.000.234.20")); // 1000234.20
echo "<hr />";
print_r(preg_replace('/'.([0-9]{3})/', '$1', "1.234")); // 1234
?>