正则表达式之分组的回溯引用问题

举报
泽宇-Li 发表于 2020/12/30 13:04:45 2020/12/30
【摘要】 正则表达式简介正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和gr...

正则表达式简介

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。


许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

引子

前端开发中,难免会遇到需要匹配标签的需求,这么简单的需求,不就是两个尖括号包裹一个标签名嘛,接下来一顿操作,/<[\w]+>.*<\/[\w]+>/g,然后完美匹配了 <div>xx</div> 等内容,需求完成…

等等,咋看之下,当前正则确实能匹配各种标签,但是它同样能匹配类似 <div>xx</p> 的内容。这就意味着我们需要保持两个尖括号内的内容相同才行。

正则之分组回溯引用 分组 ()

所谓分组,就是把要匹配的内容放在括号()里。括号里的内容可以视为是一个整体的子表达式    
/<([\w]+)>.*<\/([\w]+)>/g

回溯引用 \N

正则表达式还提供了一种引用之前匹配分组的机制,有些时候,我们或许会寻找到一个子匹配,该匹配接下来会再次出现。    
// 该表达式中的 \1 就是整个表达式中的第一个分组
var reg = /<([\w]+)>.*<\/\1>/
reg.test('<div>xx</div>') // true
reg.test('<div>xx</p>') // false

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。