网上看了个千分位转换的正则,想了半天没想明白,为什么那个 + 要写在那里,别的位置就不行了。
2 回答

萧十郎
TA贡献1815条经验 获得超13个赞
\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)
个数字。
添加回答
举报
0/150
提交
取消