猿问

/\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)个数字。

汪汪一只猫

(\d{3})+是一个分组,表示分组(d{3})可以出现多次。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答