javascript - 每八位加逗号

标签 javascript jquery regex

给定以下输入:

123456781234567812345678

我正在努力完成以下任务:

12345678,12345678,12345678

目前完成此任务的工作如下:

parts = parts.replace(/\B(?=(\d{8})+(?!\d))/g, ",");

我遇到的问题是正则表达式是从右向左读取的。我创建了一个 JSFIDDLE 来显示这个问题。我得到的结果是这样的。

123,45678910,12345678

最后,当我使用箭头键四处移动时,它会让我回到输入的末尾。

REGEX101

最佳答案

您可以使用以下基于负前瞻的正则表达式。

alert('123456781234567812345678122'.replace(/(\d{8})(?!$)/g, "$1,"))
alert('123456781234567812345678'.replace(/(\d{8})(?!$)/g, "$1,"))

DEMO

(\d{8}) 捕获每 8 个数字字符,但不捕获最后一个字符。 (?!$) 否定前瞻,它断言匹配后不会跟在行 anchor 的末尾。因此,通过将匹配的字符替换为第一组中的 present 加上 , 将为您提供所需的输出。

关于javascript - 每八位加逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677082/

相关文章:

javascript - JS : event listener on hidden element

javascript - 每次用户在新浏览器窗口中访问应用程序 URL 时,如何以编程方式在 IE 中创建新的浏览器 session

javascript - 用连字符和/或撇号匹配单词的正则表达式

java - 正则表达式帮助 : Excluding characters

java - 正则表达式的模式

javascript - 使用 PHP 和 JavaScript 动态更改链接目标

jquery - 使用 jQuery 添加页面加载器

用于表示海量数据的 Javascript 网格

javascript - 为什么删除元素比添加元素花费更多时间?

javascript - 使用正则表达式,有条件地替换为 $1 或空字符串