Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.9k views
in Technique[技术] by (71.8m points)

帮我理解这个正则表达式,实在搞不懂

下面是千分位格式化的正则表达式,传入1234567890,返回
1,234,567,890
不知道如何理解,请逐个字符解释给我这个小白听

function regFormatPermil(v){
 const reg = /d{1,3}(?=(d{3})+$)/g
 return `${v}`.replace(reg,'$&,')
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

这里用到了断言,在浏览器端使用要注意兼容性,chrome是支持的,但是firefox和safari之类的貌似都不支持。

/d{1,3}(?=(d{3})+$)/g 这个正则以贪婪模式匹配一个串a, 仅当a后面跟着3的倍数个数字时才匹配,?=为后行断言先行断言,表示紧随其后的条件,但是不在匹配结果里,即不是a的一部分。
a的长度在1-3之间(/d{1, 3}, 贪婪模式会尽可能长地匹配)。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...