我正在使用以下正则表达式将逗号“插入”到 JavaScript 中的数字中。
(\d)(?=(\d{3})+(?!\d))
它可以很好地处理整数,但是当处理十进制数时,它会失败,例如 10000.001223456(结果为 1,234,568.0,000,454,554)
正则表达式在“.”之后向前看会发生什么找到匹配项并将其替换为 ,</p>
我尝试补救 by adding negative lookbehind 但没有运气,
((\d)(?=(\d{3})+(?!\d))(?<!\.))
自从“.”以来可以位于序列中的任何位置,并且我不能使用 *
也不能使用 +
。
如何制作在某些特定符号之后不匹配的正则表达式(在本例中是在“.”之后)?
最佳答案
只需 3 个步骤即可实现此目的:
- 将数字分为整数部分和小数部分
- 修改整数部分
- 加入。
JS 中没有可变宽度后向查找,这在这里会非常方便。
var s = ".12345680000454554";
//Beforehand, perhaps, it is a good idea to check if the number has a decimal part
if (s.indexOf(".") > -1) {
var splts = s.split(".");
//alert(splts);
splts[0] = splts[0].replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
//alert(splts[0]);
s = splts.join(".");
alert(s);
}
else
{
alert(s.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,'));
}
关于javascript - 正则前瞻千位分隔符的正则表达式不会匹配点后的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32074921/