本文详解JavaScript中正则表达式的分组语法,包括圆括号定义分组及$1至$9预定义属性获取子串的方法。通过示例解析RegExp.$1等静态属性的引用方式,并深入剖析嵌套分组的编号逻辑与反向引用\1的使用规则,帮助开发者准确掌握复杂正则的匹配机制。
分组语法与属性定义
语法
元字符 (pattern) 用于定义反复匹配的分组。
属性 $1~$9 若存在,用于获取对应分组中匹配到的子串。
\1 或 $1 用于匹配第一个分组中的内容。
\2 或 $2 用于匹配第二个分组中的内容。
...
\9 或 $9 用于匹配第九个分组中的内容。
用法示例
分组匹配示例与RegExp属性
var reg = /(A+)((B|C|D)+)(E+)/gi;//该正则表达式有4个分组
//对应关系
//RegExp.$1 <-> (A+)
//RegExp.$2 <-> ((B|C|D)+)
//RegExp.$3 <-> (B|C|D)
//RegExp.$4 <-> (E+)
上述代码同时展示了 $1~$9 的用法。
$1~$9 是正则表达式预定义的静态属性,通过 RegExp.$1 进行引用。
分组嵌套关系说明
以下代码说明了分组的嵌套关系。
嵌套分组的编号逻辑
//测试环境 Chrome浏览器
var str = "ABCDE";
var reg = /(A+)((B|C|D)+)(E+)/gi;
str.match(reg);//输出:["ABCDE"]
reg.exec(str,'i');//输出:["ABCDE", "A", "BCD", "D", "E"]
RegExp.$1;//输出:"A"
RegExp.$2;//输出:"BCD"
RegExp.$3;//输出:"D"
RegExp.$4;//输出:"E"
由此可清晰看出分组的嵌套关系。
总结而言,当大分组包含小分组时,小分组排在对应大分组之后的分组序号中,依此类推。
以上所述即为本文的全部内容,希望对大家有帮助。