分组捕获
1、(exp)
匹配exp,并捕获文本到自动命名的组里
2、(?<name>exp)
匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
3、(?:exp)
匹配exp,但不捕获匹配的文本
位置指定
1、(?=exp)
匹配exp前面的位置
2、(?<=exp)
匹配exp后面的位置
3、(?!exp)
匹配后面跟的不是exp的位置
4、(?<!exp)
匹配前面不是exp的位置
实战
我们比较常用的,是分组捕获里面的1和3,结合位置指定的1和2,位置指定最为重要。
比如要提取a标签的href内容,我们必须知道待提取内容的前、后都是什么?
//正则 ?<= 和 ?= 用法
const str = '<a target=_blank href="www.baidu.com">百度一下</a>';
const reg = /(?<=(?:href=")).+(?=(?:">))/;
const arr = str.match(reg);
if(arr && arr[0]){
console.log(arr[0]);
}
网友评论