例子:
let reg = /(?:}\s*(\S+)\s*#)|(?:\s+(\S+)\s+)|(?:\s+(\S+)\s*#)|(?:}\s*(\S+)\s+)/g; let keyList = [] let match = value.match(reg) if( match ){ keyList = match.map((matchItem) => { let key matchItem.replace(reg, (res, $1, $2, $3, $4) => { key = $1 || $2 || $3 || $4 }) return key }) } console.log("函数g4词法", keyList)
1. 正则表达式使用 | 表示逻辑或
2. 使用 | 是,用 ( ),将正则分组
3. 使用 ?: 形成被动子表达式,忽略一组括号的捕获
4. 在匹配时,会对或者串上的捕获组全部捕获
5. 捕获的顺序是从前往后,从外向里捕获
\(}\s*(1\S+)\s*#)|(\s+(2\S+)\s+)\ // 捕获顺序为 }\s*(1\S+)\s*# 、1\S+ 、 \s+(2\S+)\s+ 、 2\S+ \(?:}\s*(1\S+)\s*#)|(?:\s+(2\S+)\s+)\ // 捕获顺序为 1\S+ 、 2\S+
标签:匹配,捕获,正则,let,表达式,key,keyList,reg,match From: https://www.cnblogs.com/yan122/p/17124064.html