给定以下输入:
123456781234567812345678
我正在努力完成以下任务:
12345678,12345678,12345678
目前完成此任务的工作如下:
parts = parts.replace(/\B(?=(\d{8})+(?!\d))/g, ",");
我遇到的问题是正则表达式是从右向左读取的。我创建了一个 JSFIDDLE 来显示这个问题。我得到的结果是这样的。
123,45678910,12345678
最后,当我使用箭头键四处移动时,它会让我回到输入的末尾。
最佳答案
您可以使用以下基于负前瞻的正则表达式。
alert('123456781234567812345678122'.replace(/(\d{8})(?!$)/g, "$1,"))
alert('123456781234567812345678'.replace(/(\d{8})(?!$)/g, "$1,"))
(\d{8})
捕获每 8 个数字字符,但不捕获最后一个字符。 (?!$)
否定前瞻,它断言匹配后不会跟在行 anchor 的末尾。因此,通过将匹配的字符替换为第一组中的 present 加上 ,
将为您提供所需的输出。
关于javascript - 每八位加逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677082/