正则表达式回溯引用 正则表达式之分组的回溯引用问题
别样红。 人气:0正则表达式简介
正则表达式,又称规则表达式。(英语: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
加载全部内容