正则
定位符
定位符用来描述字符串或单词的边界,^ 和 $ 分别指字符串的开始与结束,\b 描述单词的前或后边界,\B 表示非单词边界
字符 | 描述 |
---|---|
^ | 匹配输入字符串开始的位置 |
$ | 匹配输入字符串结束的位置 |
\b | 匹配单词边界 |
\B | 匹配非单词边界 |
\b匹配单词边界
/\bCha/.test('a Chavvvvv') //true
/\bCha/.test('aChavv') //false
\B表示非单词边界匹配。
'aaapttt'.replace(/\B/g,'+')
得到 “a+a+a+p+t+t+t”
(?:pattern)
正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。该匹配不需要获取供以后使用
'aaapttt'.replace(/\B(?=apt)/g,'+') //"aa+apttt"
'aaapttt'.replace(/\Bapt/g,'+') //"aa+tt"
第一个表示后面时apt的非单词边界
(?!pattern)
正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,与上面相反。
/\B(?=(\d{3})+(?!\d))/g
所以这里的意思是
\d{3} 匹配三个数字,+表示前面的内容重复1到多次,所以(\d{3})+表示三个数字的1到多次,也就是3,6,9…等3的倍数个数字的字符串;
(?!\d) 表示不能是数字
/\B(?=(\d{3})+(?!\d))/g 就是全局匹配一个位置,这个位置是非单词边界,然后后面是3的倍数个数字,然后是非数字。