除了最后一个之外,我的正则表达式除去了所有点。太好了!
但我希望,只是剥离"千"分隔符,而不是" 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
?>
答案 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
?>