我需要使用 JavaScript 在网页上显示格式化的数字。我想格式化它,以便在正确的位置有逗号。我将如何使用正则表达式来做到这一点?我已经做到了这样的事情:
myString = myString.replace(/^(\d{3})*$/g, "${1},");
...然后意识到这将比我想象的更复杂(并且上面的正则表达式 甚至没有接近我需要的)。我已经进行了一些搜索,但我很难找到适合这个的东西。
基本上,我想要这些结果:
...你明白了。
最佳答案
这可以在单个正则表达式中完成,无需迭代。如果您的浏览器支持 ECMAScript 2018,您可以简单地使用环视并在正确的位置插入逗号:
搜索 (?<=\d)(?=(\d\d\d)+(?!\d))
并全部替换为 ,
在旧版本中,JavaScript 不支持后视,因此这不起作用。幸运的是,我们只需要稍作改动:
搜索 (\d)(?=(\d\d\d)+(?!\d))
并全部替换为 \1,
所以,在 JavaScript 中,它看起来像:
result = subject.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
说明:断言从字符串中的当前位置开始,可以匹配三的倍数的数字,并且在当前位置的左边有一个数字。
这也适用于小数 (123456.78),只要“点右侧”没有太多数字(否则你会得到 123,456.789,012)。
也可以在 Number 原型(prototype)中定义,如下:
Number.prototype.format = function(){
return this.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
};
然后像这样使用它:
var num = 1234;
alert(num.format());
图片来源:Jeffrey Friedl,Mastering Regular Expressions, 3rd. edition,p。 66-67
https://stackoverflow.com/questions/2254185/
相关文章:
bash - 如何在 bash 中打印一些文本并用空格填充到一定宽度?
javascript - 如何在javascript中将完整日期转换为短日期?
visual-studio-code - 如何格式化 Visual Studio Code 项目中的
visual-studio - Razor Helper 语法自动格式化丑陋。怎么修?
sql-server - SSMS 结果到网格 - CRLF 未保留在复制/粘贴中 - 有更好的技术
perl - Perl 中的今天日期,格式为 MM/DD/YYYY
reporting-services - Reporting Services [SSRS] 表达式