如何通过在每组三位数字之间插入空格来格式化数字


How to format numbers by inserting a space between each group of three digits?

我使用preg replace通过在每组三位数字之间插入空格来分隔数字:

$alexa_rank_raw = 8389876;
$alexa_rank = preg_replace("/('d{3})/", '$1.', $alexa_rank_raw);
// alexa rank becomes: 838.987.6

我怎么做替换,使最终的数字看起来像这样:

8.389.876

任何想法?

您要找的是number_format

$rank = number_format($alexa_rank_raw, 0, ",", ".");

但这里也有一个正则表达式版本,因为为什么不呢?

$rank = preg_replace('/('d{1,3})(?=('d{3})+$)/', '$1.', $alexa_rank_raw);

工作原理:它贪婪地匹配最多三个数字的组(最多三个),但使用正向前看来断言从匹配组结束的位置开始一直到输入的末尾存在三个数字的精确倍数。

查看效果