正则表达式加圆括号和不加圆括号的区别

XLab
  • 391

图片描述

如图所示,下面的正则表达式因为把 # 用圆括号包围,从而匹配到了多出一个 # ,请问这是什么原因?

回复
阅读 4.3k
3 个回答
✓ 已被采纳

在正则匹配中,一般将匹配的字符串称为分组 0,按括号出现的顺序依次将其内容称为分组 1、分组 2……例如正则 /(a)(b)/ 匹配字符串 "ab",则分组 0 为 "ab",分组 1 为 "a",分组 2 为 "b"。执行正则匹配 /(a)(b)/.exec("ab") 的结果 ["ab", "a", "b"] 就是各个分组构成的字符串。如果去掉圆括号就没有分组 1、分组2……结果就是只包含分组 0 即匹配字符串的长度为 1 的数组 ["ab"]。

并没有多匹配一次,“#” 代表的是当前这次匹配中 子项也就是小括号所匹配到的内容

因为圆括号就是用来做这个的,捕获括号内部的内容。

宣传栏