首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每千位数

每千位数
EN

Stack Overflow用户
提问于 2019-03-04 00:45:13
回答 2查看 199关注 0票数 1

这是一个小测验。

用替换将所有数字中的逗号分隔开。ie: 12345678→12,345,678.这个数字可能在一个句子中,也可能有一个以上的数字在句子中。

我试过密码

代码语言:javascript
复制
/(\d{3})(\d{3})/g

结果回报

测试6/19: 100013541615681651应该变成100,013,541,615,681,651。你忘了全球旗帜了吗?

试过

代码语言:javascript
复制
/\d(?=(?:\d{3})+(?!\d))/g

结果回报

测试14/19: regex错误地替换了以下字符串中的数字:您的票号是A87654

Regex 演示

匹配字符串

代码语言:javascript
复制
12345678901234567890

12345678

1234567

不匹配字符串

代码语言:javascript
复制
A87654 

预期结果

代码语言:javascript
复制
123,456789,012345,67890

123,45678

123,4567

A87654 

参考文献

匹配整行文本

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-04 05:51:32

下面是一个不匹配与一些字母连接的数字的正则表达式:

代码语言:javascript
复制
(?=\b\d|\G)\d+?(?=(?:\d{3})+\b)

(?=\b\d|\G)是对一个单词中断和一个数字的展望,或者是上一次匹配的结束。\d+?查找最少的数字,然后(?=(?:\d{3})+\b)断言它至少跟随一组3位数,然后是另一个单词断点。单词在正则表达式的开头和结尾处中断,这意味着它不能匹配作为字母数字字符串一部分的数字。

应该用$0,替换它,以便在数字中插入逗号。

基于regex101的演示

票数 1
EN

Stack Overflow用户

发布于 2019-03-04 00:48:58

查找由3位数组成的重复组,最后是负的数字组:

代码语言:javascript
复制
\d(?=(?:\d{3})+(?!\d))

而代之以

代码语言:javascript
复制
$0,

https://regex101.com/r/QAHt6E/5

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54975269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档