PHP正则表达式编号格式化

时间:2016-04-13 15:42:35

标签: php regex

除了最后一个之外,我的正则表达式除去了所有点。太好了!
但我希望,只是剥离"千"分隔符,而不是" float"那些。我想浮子以一位或两位数结束 我无法改变输入格式。

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

<?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

?>

1 个答案:

答案 0 :(得分:0)

如果您假设每千个分隔符后跟正好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
?>