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

图片描述

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

阅读 6.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"]。

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题