正则表达式 (regular expression)是一个描述字符模式的对象。 ECMAScript 的 RegExp 类
表示正则表达式,而 String 和 RegExp 都定义了使用正则表达式进行强大的模式匹配和文本 检索与替换的函数。
捕获组:把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用。
例如:

var str = "2019-10-28";
var reg = /(\d{4})-(\d{2})-(\d{2})/;
var result = reg.exec(str)
console.log(result[0])
console.log(result[1])
console.log(result[2])
console.log(result[3])

如图:

非捕获分组: 分组匹配之后,不需要的用?: 语法过滤子表达式内容。也就是代码匹配,但是不保存
代码如下:

var str = "2019-10-28";
var reg = /(\d{4})-(\d{2})-(?:\d{2})/;
var result = reg.exec(str)
console.log(result[0])
console.log(result[1])
console.log(result[2])
console.log(result[3])

如图:

在jQuery源码中,曾用到非捕获组的方法,获取字符串、标签、id选择器来做选择器表达式,如:

quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/

正则 quickExpr 包含两个分组,依次匹配 HTML 代码和 id。如果匹配成功,则数组 match 的第一个元素为参数 selector,第二个元素为匹配的 HTML 代码或 undefined,第三个 元素为匹配的 id 或 undefined。下面的例子测试了正则 quickExpr 的功能:

  quickExpr.exec( '#target' );   // ["#target", undefined, "target"]quickExpr.exec( '<div>' );      // ["<div>", "<div>", undefined]quickExpr.exec( 'abc<div>' );   // ["abc<div>", "<div>", undefined]quickExpr.exec( 'abc<div>abc#id' );   // ["abc<div>abc#id", "<div>", undefined]quickExpr.exec( 'div' );   // nullquickExpr.exec( '<div><img></div>' ); // ["<div><img></div>", "<div><img>

正则表达式捕获分组和非捕获分组及用法相关推荐

  1. 【正则表达式系列】一些概念(字符组、捕获组、非捕获组)

    前言 本文介绍一些正则中的常用名词以及对应概念,譬如字符组,捕获组.非捕获组.反向引用.转义和\s \b等 大纲 字符组 捕获组 反向引用 非捕获组 ..\s和\S \b \转义 字符组 []字符组表 ...

  2. 捕获分组和非捕获分组以及命名分组

    下面由一个例子引出非捕获组. 有两个金额:8899¥.显然,前一个是8899元的人民币,后一个是6688元的美元.我现在需要一个正则,要求提炼出它们的货币金额和货币种类.正则可以这写:(\\d)+([ ...

  3. java正则表达式基础 关于特殊字符、捕获组和非捕获匹配

    JAVA正则表达式 我个人认为正则表达式是很好用很强大的,在编写程序中很多地方都用的到,这里有一些我学习的基础理解和大家分享,欢迎一起讨论. 正则表达式是一种用来表达语法规则的字符串,是一种字符串匹配 ...

  4. php 正则匹配分组命名,正则表达式、分组、子匹配(子模式)、非捕获子匹配(子模式)...

    前面我们知道正则表达式有很多元字符表示匹配次数(量词),都是可以重复匹配前面出现的单个字符次数.有时候,我们可能需要匹配一组多个字符一起出现的次数.这个时候,我们需要分组了.就是用小括号来括起这些字符 ...

  5. 正则表达式中的非捕获组是什么?

    非捕获组(即(?:) )如何在正则表达式中使用,它们有什么用? #1楼 在复杂的正则表达式中,您可能会希望使用大量的组,其中一些用于重复匹配,而另一些则提供反向引用. 默认情况下,与每个组匹配的文本会 ...

  6. 特殊构造(非捕获总结)

    参考:http://blog.chenlb.com/2008/12/java-regular-expression-special-constructs-ornon-capturing-group.h ...

  7. 正则基础之——非捕获组

    非捕获组:(?:Expression) 接触正则表达式不久的人,通常都会对非捕获比较迷惑,为什么要有非捕获组?作用是什么?应该在什么场景下使用? 说到非捕获组,首先要了解什么是捕获组,详细内容参考 正 ...

  8. 正则表达式的非捕获性分组

    非捕获性分组,通常由一对括号加上 ?: 加上子表达式组成,非捕获性分组不会创建反向引用,就好像没有括号一样.如下: var color = "#808080"; var outpu ...

  9. 正则表达式 非捕获性分组

    非捕获性分组语法为(?:pattern),即将pattern部分组合成一个可统一操作的组合项,但不把这部分内容当作子匹配捕获,匹配的内容部进行编号也不存储在缓冲区中供以后使用.非捕获性分组方法在必须进 ...

最新文章

  1. 20154312曾林 - Exp1 PC平台逆向破解
  2. Vue单文件组件环境配置
  3. 值得关注!一种新型脑机接口--集成光子芯片的脑机接口是否可行?
  4. linux 解压所有以zip结尾的文件_在 Linux 上压缩文件:zip 命令的各种变体及用法...
  5. 扇区示意图计算机组成原理,计算机组成原理本.ppt
  6. 赣州光华职业技术学校计算机专业,赣州光华职业技术学校
  7. Java调用.Net的web service的几种方式
  8. Objective -C Memory Management 内存管理 第一部分
  9. js解码与编码是什么意思?
  10. libevent: linux安装libevent
  11. js数组获取index_通过事例重温一下常见的 JS 中 15 种数组操作(备忘清单)
  12. odoo里用sql语句说为日期date类型,没有转换为字符串。
  13. SDN第四次上机作业
  14. java7-3 继承
  15. WINCE下ActiveSync连接故障修复办法
  16. Express + JWT用户认证最轻实践
  17. 畅游高管曝出“k事件” 搜狐的老本往后怎么“吃”?
  18. 测试开发之前端——No8.HTML5中的媒介事件
  19. 微信开发之网页返回关闭浏览器
  20. 无需下载软件,有手就能做的线上个人简历

热门文章

  1. python读取doc文件_Linux 下Python 读取Word文档内容的方法
  2. Java 面试之技术框架
  3. java 2个小数点_在java程序中取后面两个小数点的方法
  4. Php刷新重载id,php 使用 __call重载
  5. android studio运行模拟器报错请求超时_GDA关于android脱壳的问题说明
  6. 投票源码程序_基于用户投票的排名算法
  7. 数据库MySQL基础---JDBC开发步骤--JDBC封装工具类--PreparedStatement实现CRUD操作
  8. 问题:连接查询和子查询的区别和连接及优劣?
  9. gevent模块的使用
  10. 想精通正则表达式 这几个正则表达式学习资料及工具你必须有!