猿问
/\B(?=(\d{3})+(?!\d))/g这段正则如何理解,特别是那个 ‘+’ 号
网上看了个千分位转换的正则,想了半天没想明白,为什么那个
+
要写在那里,别的位置就不行了。
米脂
浏览 1967
回答 2
2回答
萧十郎
\B匹配非单词边界;\d匹配一个数字;+是量词,表示前面的内容重复1到多次?=是预言,表示这个位置后面的内容需要满足的条件,注意只是匹配一个位置,并不匹配具体的字符,所以是零宽;?!也是预言,表示这个位置后面的内容不能满足的条件,注意也只是匹配一个位置,并不匹配具体的字符,所以也是零宽;\d{3}匹配三个数字,+表示前面的内容重复1到多次,所以(\d{3})+表示三个数字的1到多次,也就是3,6,9...等3的倍数个数字的字符串;(?!\d)匹配一个位置,这个位置后面不是数字(?=(\d{3})+(?!\d))匹配一个位置,这个位置后面首先是3的倍数个数字的字符串,接下来的位置不是数字/\B(?=(\d{3})+(?!\d))/g就是全局匹配一个位置,这个位置是非单词边界,然后后面是3的倍数个数字,然后是非数字。比如,字符串ad12345678abs,这个正则匹配的位置就是2后面的位置,5后面的位置。2后面有6(3 * 2)个数字,5后面有3(3 * 1)个数字。
3
0
0
汪汪一只猫
(\d{3})+是一个分组,表示分组(d{3})可以出现多次。
0
0
0
随时随地看视频
慕课网APP
相关分类
JavaScript
我要回答