美文网首页
正则表达式捕获分组和非捕获分组及用法

正则表达式捕获分组和非捕获分组及用法

作者: 前端岚枫 | 来源:发表于2019-10-28 13:10 被阅读0次

正则表达式 (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' );   // null
   quickExpr.exec( '<div><img></div>' ); // ["<div><img></div>", "<div><img>

相关文章

  • 正则表达式捕获分组和非捕获分组及用法

    正则表达式 (regular expression)是一个描述字符模式的对象。 ECMAScript 的 RegE...

  • 正则捕获组

    分组类型 有四种分组类型 捕获型() 非捕获型(?:) 正向前瞻型(?=) 反向前瞻型(?!) 捕获型 分组下面的...

  • JS正则表达式的骚操作

    参考资料 《JS正则表达式的分组匹配》《正则表达式之捕获组/非捕获组介绍》《正则表达式中(?:pattern)、(...

  • 常用正则表达式

    基本的规则 [exp] 匹配中括号里的内容 (exp)捕获分组 (?:exp)非捕获分组 环视功能 (?=exp)...

  • javascript正则表达式----分组捕获

    正则的分组捕获 简单的分组捕获之前在写身份证号正则(不完整)的时候,提到过分组捕获 分组多次捕获假设有这种需求: ...

  • 正则表达式

    javascript正则表达式正则表达式30分钟入门教程js的正则表达式的正则前瞻(?=)和非捕获性分组(?:)有...

  • 正则:分组

    正则分组作用: 1、改变优先级:2、分组引用 3、分组捕获:正则在捕获的时候,不仅把大正则匹配的内容捕获到,而且还...

  • JavaScript - 正则表达式(二)

    正则表达式(一)传送门 四. 捕获组 作用:分组捕获的内容可以供表达式使用,或者最后输出 一个括号就是一个分组,最...

  • 正则表达式中?=和?:和?!的理解

    要理解?=和?!,首先需要理解前瞻,后顾,负前瞻,负后顾四个概念: 举例: 要理解?:则需要理解捕获分组和非捕获分...

  • 3.3.4 非捕获型分组

    目前为止,总共介绍了括号的三种用途: 分组:将相关的元素归拢到一起,构成单个元素; 多选结构:规定可能出现的多个子...

网友评论

      本文标题:正则表达式捕获分组和非捕获分组及用法

      本文链接:https://www.haomeiwen.com/subject/hnxbvctx.html