javascript - 正则前瞻千位分隔符的正则表达式不会匹配点后的数字

标签 javascript regex

我正在使用以下正则表达式将逗号“插入”到 JavaScript 中的数字中。

(\d)(?=(\d{3})+(?!\d))

它可以很好地处理整数,但是当处理十进制数时,它会失败,例如 10000.001223456(结果为 1,234,568.0,000,454,554)

正则表达式在“.”之后向前看会发生什么找到匹配项并将其替换为 ,<​​/p>

Example here

我尝试补救 by adding negative lookbehind 但没有运气,

((\d)(?=(\d{3})+(?!\d))(?<!\.))

自从“.”以来可以位于序列中的任何位置,并且我不能使用 * 也不能使用 +

如何制作在某些特定符号之后不匹配的正则表达式(在本例中是在“.”之后)?

最佳答案

只需 3 个步骤即可实现此目的:

  1. 将数字分为整数部分和小数部分
  2. 修改整数部分
  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/

相关文章:

javascript - HTML DOM 元素全局范围

javascript - jQuery 日历事件点击不触发 ftLab 快速点击

python - 从(更多)复杂字符串(可能是正则表达式匹配)中提取日期字符串

删除 R 中整个数据帧列上的随机字符串的一部分

html - 如何阻止在文本框中输入电子邮件地址并显示弹出窗口?

C# 无法让 RegEx 适用于所有情况

javascript - Html.TextBox 上的自动完成功能不起作用

javascript - 根据 JS 数组中的值将元素追加到 DOM

javascript - zappier 代码中的基本 http 身份验证

javascript - 如何删除字符串中重复的空格?