正则表达式分组的详解(附代码)

这次给大家带来正则表达式分组的详解(附代码),正则表达式分组的注意事项有哪些,下面就是实战案例,一起来看一下。

正则表达式分组:
如果想匹配3个数字,正则表达式可以用如下写法:

d{3}

以上代码使用重复量词可以匹配3位数字。
但是在实际应用中,往往需要重复多个字符,例如我想重复ab两个字符,使用以下代码就不合适了,代码如下:

ab{3}

以上正则表达式只能够重复3次b。
为了实现重复多个字符可以使用小括号来指定子表达式或者说分组来实现此功能,例如:

(ab){3}

上面的正则就可以重复ab了。
所谓的分组就是使用小括号将一些项包括起来,使其成为独立的逻辑域,那么就可以像处理一个独立单元一样去处理小括号的内容。

下面看一段代码实例:

(d{1,3}.){3}d{1,3}

上面是一个简单的ip匹配正则表达式。由小括号包裹的内容会被作为一个独立的逻辑域进行操作。
分组的作用:
在正则表达式中,分组具有举足轻重的作用,下面就简单对它的功能做一下简单的介绍。

一.起到原始的分组作用:

把单独的项目进行分组,以便合成子表达式,这样就可以像处理一个单独的字符那样,对其应用|、+、*或者?等元字符来操作它们。
实例代码如下:

var str="I love javascript and java";console.log(str.match(/java(script)?/gi));

登录后复制

由以上代码的运行结果可以看出,正则表达式既可以匹配字符串javascript也可以匹配java,这是因在正则表达式中采用了分组,并且使用重复量词?,可以使前面的子表达式重复0次或者1次。

二.定义子模式:

分组另一个非常重要的作用就是在完整的模式中定义子模式。
当一个正则表达式成功的和目标字符串相匹配时,可以从目标字符串中抽出和小括号中字表达式相匹配的部分。
假如我们匹配的是以一个数字开头的后面跟着一个或者多个不区分大小写的字母的字符串,正则表达式可以这样写:

/d[a-zA-Z]+/

假如我们真正关心和需要的是开头的数字,那么就可以将正则表达式的数字部分放入小括号就可以从检索到的匹配中抽取数字.

/(d)[a-zA-Z]+/

三.引用子表达式:
正则表达语法中可以在同一个表达式中的后部引用前面的子表达式。这是通过在””后面跟随数字实现的。此数字指定了小括号字表达式在正则表达式中的位置,例如是引用的第一个带有圆括号的子表达式,自然就是第二个带有圆括号的子表达式。
特别注意:由于子表达式是可以相互嵌套的,那么计算子表达式的位置的时候,只要确定左括号的位置即可。例如:

/(java(script))/

在以上正则表达式中,嵌套的子表示是可以用表示。
对于子表达式的引用,并不是引用的匹配模式,而是对子表示匹配内容的引用。一般来说对子表达式的引用一般是用来实施一条约束,看下面的代码:

/([‘”])[^'”]*/

通常情况下左右引号是相匹配的,如果前面是双引号,那么结尾也要是双引号,前面是单引号那么结尾也必须是单引号,并且字符串中间不能够再出现其他的引号,例如:

“脚本之家欢迎您”
‘脚本之家欢迎您’

那么上面的正则表达式就实现此功能,当前面的子表达式匹配单引号的时候,那么后面的也就表示的是单引号,如果子表示匹配的双引号,那么后面的就表示的是双引号。
非引用型分组:
分组会占用一定的系统资源,尤其是正则表达式较长的时候会降低匹配速度。有时候仅仅是为了设置一个分组,并不需要引用,那么使用非引用类型分组将会是一个良好的选择。

/(java(?:script))/

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

JS里怎么用正则将字符串中的多个空格替换为一个空格

在PHP里使用正则的效率 贪婪、非贪婪与回溯详解(附代码)

以上就是正则表达式分组的详解(附代码)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2777675.html

(0)
上一篇 2025年3月8日 15:12:05
下一篇 2025年3月8日 15:12:13

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 正则表达式字符类的详细介绍

    这次给大家带来正则表达式字符类的详细介绍,使用正则表达式字符类的注意事项有哪些,下面就是实战案例,一起来看一下。 正则表达式字符类加深理解:一.基本概念:字符类相对来说是比较简单的,但是也有可能由于理解不够深入或者大意造成一些误区,下面再来…

    编程技术 2025年3月8日
    000
  • 正则表达式的d元字符使用详解(附代码)

    这次给大家带来正则表达式的d元字符使用详解(附代码),使用正则表达式d元字符的注意事项有哪些,下面就是实战案例,一起来看一下。 正则表达式d元字符:d元字符可以匹配数字字符,等价于”[0-9]”。 语法结构: 构造函…

    2025年3月8日
    200
  • 正则表达式的.号元字符使用详解(附代码)

    这次给大家带来正则表达式的.号元字符使用详解(附代码),使用正则表达式.号元字符的注意事项有哪些,下面就是实战案例,一起来看一下。 正则表达式.号元字符:点号(.)元字符可以匹配除了回车符()和换行符()之外的任意字符。语法结构:构造函数方…

    编程技术 2025年3月8日
    200
  • 正则表达式W元字符的使用详解(附代码)

    这次给大家带来正则表达式W元字符的使用详解(附代码),正则表达式W元字符使用的注意事项有哪些,下面就是实战案例,一起来看一下。 正则表达式W元字符:W(大写)用来匹配非单词字符,它等价于”[^a-zA-Z0-9_]”…

    编程技术 2025年3月8日
    200
  • 正则表达式u修饰符的使用详解(附代码)

    这次给大家带来正则表达式u修饰符的使用详解(附代码),正则表达式u修饰符使用的注意事项有哪些,下面就是实战案例,一起来看一下。 正则表达式u修饰符: 此修饰符标识能够正确处理大于uFFFF的Unicode字符。也就是说,会正确处理四个字节的…

    编程技术 2025年3月8日
    200
  • 在正则表达式中有哪些新增特性

    这次给大家带来在正则表达式中有哪些新增特性,使用正则表达式中新增特性的注意事项有哪些,下面就是实战案例,一起来看一下。 ES2015 正则表达式新增特性: 在原来正则表达式基础上,ES2015增强了对四字节unicode字符的支持等功能。 …

    编程技术 2025年3月8日
    200
  • 正则的模式修饰符使用详解

    这次给大家带来正则的模式修饰符使用详解,使用正则模式修饰符的注意事项有哪些,下面就是实战案例,一起来看一下。 i (PCRE_CASELESS) 如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。 m (PCRE_MULTILINE…

    编程技术 2025年3月8日
    200
  • 正则表达式m修饰符(多行匹配)使用详解

    这次给大家带来正则表达式m修饰符(多行匹配)使用详解,使用正则表达式m修饰符(多行匹配)的注意事项有哪些,下面就是实战案例,一起来看一下。 正则表达式m修饰符: m修饰符规定正则表达式可以执行多行匹配。m修饰符的作用是修改^和$在正则表达式…

    编程技术 2025年3月8日
    200
  • 正则表达式小结(实战归纳)

    这次给大家带来正则表达式小结(实战归纳),使用正则表达式实战的注意事项有哪些,下面就是实战案例,一起来看一下。 正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个…

    编程技术 2025年3月8日
    200
  • 大小写不敏感的i修饰符使用详解

    这次给大家带来大小写不敏感的i修饰符使用详解,使用大小写不敏感i修饰符的注意事项有哪些,下面就是实战案例,一起来看一下。 正则表达式i修饰符: i修饰符用来规定正则表达式的匹配是大小写不敏感的。 语法结构: 构造函数方式: new RegE…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论