正则 分组
This commit is contained in:
parent
51e7114a22
commit
9b424b14df
@ -102,6 +102,7 @@ let reg2 = /[0-9]/g
|
||||
|
||||
### 量词
|
||||
用于指定某个组合出现的数量
|
||||
|
||||
|字符|含义|
|
||||
|---|---|
|
||||
|?|0次或1次|
|
||||
@ -173,5 +174,39 @@ let reg = /\d{2}(?=[a-zA-Z]{2})/
|
||||
|零宽负向后顾|exp(?<!assert)|我后面是不符合assert的|
|
||||
|
||||
|
||||
如同^代表开头,$代表结尾,\b代表单词边界一样,前瞻断言和后顾断言也有类似的作用,它们只匹配某些位置
|
||||
在匹配过程中,不占用字符,所以被称为`零宽`
|
||||
如同^代表开头,$代表结尾,\b代表单词边界一样,前瞻断言和后顾断言也有类似的特点,它们只匹配某些位置
|
||||
在匹配过程中,不占用字符,所以被称为`零宽`
|
||||
|
||||
### 分组
|
||||
当我们需要把某个部分看做一个整体添加量词的时候, 就要给这个部分添加`()`
|
||||
也就是作为一个分组
|
||||
(也包括上面的分支条件的边界位置)
|
||||
|
||||
未添加分组
|
||||

|
||||
|
||||
添加分组
|
||||

|
||||
|
||||
添加分组之后, 分组后面跟着的量词就会作用于整体
|
||||
|
||||
#### 分组的引用
|
||||
正则在解析的过程中会对分组进行编号(从1开始)
|
||||
我们可以通过`\数字`的方式对分组进行引用, 从而实现一些需求
|
||||
|
||||
例如
|
||||
要匹配两个连续的数字, 并且这两个数字不同
|
||||
> 要让后一个数字和前一个数字不同
|
||||
就必须要引用前一个数字, 那么只能对分组进行引用
|
||||
同时配合零宽负向前瞻
|
||||
|
||||
```javascript
|
||||
let reg = /(\d{1})(?!\1)\d{1}/
|
||||
reg.test('a32') // true
|
||||
reg.test('a55') // false
|
||||
```
|
||||
+ `(\d{1})`这里代表的是匹配一个数字, 这个简单
|
||||
+ `(?!\1)`这里代表的是后面的字符与第一分组不同(但是不占用字符)
|
||||
+ `\d{1}`这里代表后面还是一个数字
|
||||
|
||||
所以就可以达到匹配两个连续数字, 并且这两个数字不同了
|
||||
|
||||
BIN
source/images/JavaScript/regex/未添加分组.png
Normal file
BIN
source/images/JavaScript/regex/未添加分组.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
BIN
source/images/JavaScript/regex/添加分组.png
Normal file
BIN
source/images/JavaScript/regex/添加分组.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Loading…
x
Reference in New Issue
Block a user