`

javascript 正则 捕获组与非捕获组

 
阅读更多
  • 捕获组
  • 语法:

    字符

    描述

    示例

    (pattern)

    匹配pattern并捕获结果,自动设置组号。

    (abc)+d

    匹配abcd或者abcabcd

    (?<name>pattern)

    (?'name'pattern)

    匹配pattern并捕获结果,设置name为组名。

     

    \num

    对捕获组的反向引用。其中 num 是一个正整数。

    (\w)(\w)\2\1

    匹配abba

    \k< name >

    \k' name '

    对命名捕获组的反向引用。其中 name 是捕获组名。

    (?<group>\w)abc\k<group>

    匹配xabcx

     

    使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个捕获组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。

     

  • 非捕获组
  • 语法:

    字符

    描述

    示例

    (?:pattern)

    匹配pattern,但不捕获匹配结果。

    'industr(?:y|ies)

    匹配'industry'或'industries'。

    (?=pattern)

    零宽度正向预查,不捕获匹配结果。

    'Windows (?=95|98|NT|2000)'

    匹配 "Windows2000" 中的 "Windows"

    不匹配 "Windows3.1" 中的 "Windows"。

    (?!pattern)

    零宽度负向预查,不捕获匹配结果。

    'Windows (?!95|98|NT|2000)'

    匹配 "Windows3.1" 中的 "Windows"

    不匹配 "Windows2000" 中的 "Windows"。

    (?<=pattern)

    零宽度正向回查,不捕获匹配结果。

    '2000 (?<=Office|Word|Excel)'

    匹配 " Office2000" 中的 "2000"

    不匹配 "Windows2000" 中的 "2000"。

    (?<!pattern)

    零宽度负向回查,不捕获匹配结果。

    '2000 (?<!Office|Word|Excel)'

    匹配 " Windows2000" 中的 "2000"

    不匹配 " Office2000" 中的 "2000"。

     

    非捕获组只匹配结果,但不捕获结果,也不会分配组号,当然也不能在表达式和程序中做进一步处理。

    首先(?:pattern)与(pattern)不同之处只是在于不捕获结果。

    接下来的四个非捕获组用于匹配pattern(或者不匹配pattern)位置之前(或之后)的内容。匹配的结果不包括pattern。

    例如:

    (?<=<(\w+)>).*(?=<\/\1>)匹配不包含属性的简单HTML标签内的内容。如:<div>hello</div>之中的hello,匹配结果不包括前缀<div>和后缀</div>。

     

    下面是程序中非捕获组的示例,用来提取邮编。

    可以看到反向回查和反向预查都没有被捕获。

     

    分享到:
    评论

    相关推荐

      JavaScript正则表达式迷你书

      《JavaScript正则表达式迷你书》是一本关于JavaScript正则表达式的专业书籍,正则表达式是处理字符串的强大工具,广泛应用于编程语言中的文本处理。本书从字符匹配、位置匹配、括号的作用、回溯法原理、拆分、构建和...

      javascript正则表达式综合练习

      JavaScript正则表达式是编程语言中的一个重要组成部分,用于处理文本模式匹配和字符串操作。这篇博客“javascript正则表达式综合练习”可能是一个实践教程或示例集合,旨在帮助开发者提升在JavaScript中使用正则...

      Javascript经典正则表达式

      - 解析:使用非捕获组时,括号内的内容不会被捕获用于以后使用。 2. **前瞻 `X(?=Y)`** - 示例:`/user(?=name)/`,匹配字符串`The username is Mary`中的`user`。 - 解析:只有当`X`后面是`Y`时才匹配`X`。 3....

      JavaScript正则表达式迷你书(1.1版)_程序逻辑_

      **JavaScript正则表达式迷你书(1.1版)** 正则表达式是JavaScript中一个强大的工具,用于处理文本字符串,进行模式匹配和查找、替换等操作。它们在编程逻辑中扮演着至关重要的角色,尤其是在处理字符串数据时,...

      javascript正则

      6. **分组与捕获**:使用圆括号 `(pattern)` 创建一个捕获组,可以捕获匹配的子字符串。在替换操作中,可以使用 `\1`、`\2` 等引用这些捕获组。 7. **非捕获组**:`(?:pattern)` 创建一个非捕获组,它不被捕获,...

      JavaScript正则表达式.rar

      8. **JavaScript中的捕获组与非捕获组** - `(pattern)` 是捕获组,会被`exec()`或`match()`记住。 - `(?:pattern)` 是非捕获组,不会被记住,仅用于分组目的。 9. **正则表达式的局限性** - JavaScript 的正则...

      javaScript 正则表达式详解

      JavaScript 正则表达式详解 JavaScript 中的正则表达式是指使用特殊字符来描述字符串模式的表达式。正则表达式可以用来匹配、检索和操作字符串。 RegExp 对象 在 JavaScript 中,正则表达式可以被定义为一个 ...

      JavaScript正则表达式匹配 div style标签_.docx

      JavaScript正则表达式匹配div style标签 本文主要介绍了JavaScript正则表达式匹配div style标签的相关知识点。通过对给定的测试字符串进行分析,我们可以了解到 JavaScript 正则表达式在匹配 div style 标签时的...

      javascript正则表达式详解

      JavaScript正则表达式是JavaScript语言中一种极为重要的文本处理工具,它允许通过简洁的语法定义文本的匹配模式。这些模式可用来对字符串进行检索、替换、提取等操作。了解和掌握JavaScript正则表达式,对于提高...

      最新的javascript正则表达式详解

      本文将深入探讨JavaScript正则表达式的最新特性、语法以及常见用法。 一、正则表达式基础 1.1 创建正则对象 在JavaScript中,有两种创建正则表达式的方法:字面量表示法(`/pattern/flags`)和构造函数(`new ...

      javaScript正则表达式帮助文档

      JavaScript正则表达式是编程语言JavaScript中的一个重要组成部分,它用于处理文本字符串,执行模式匹配和查找、替换等操作。在JavaScript中,正则表达式是一种强大的工具,可以帮助开发者进行复杂的数据验证、文本...

      经典JavaScript正则表达式实战

      JavaScript正则表达式是编程语言JavaScript中用于处理字符串的强大工具,它可以用来进行各种复杂的文本匹配、替换和提取操作。在实战中,以下是一些常见的正则表达式应用场景及其详细解释: 1. **匹配结尾的数字**...

      javascript 正则表达式教程

      JavaScript正则表达式是编程语言JavaScript中的一个重要组成部分,它用于处理文本模式匹配和字符串操作。在JavaScript中,正则表达式常用于数据验证、搜索与替换、字符串分割等任务,对于提升程序的灵活性和效率至关...

      JavaScript正则表达式迷你书(1.1版)

      此外,还会讲解如何使用分组和捕获,以及非捕获组来组织正则表达式。 接着,书中会深入讨论高级特性,如预查(`(?=...)`和`(?!...)`)、正向后顾前瞻(`(?)`和`(?&lt;!...)`)和零宽断言,这些都是正则表达式中的高级...

    Global site tag (gtag.js) - Google Analytics