正则表达式-后向引用

阅读: 3912    发布时间: 2018-01-28 12:15:26

假如我们想实现这个功能,检查是否有两个相邻的重复单词,比如“look look”、“hi hi”,利用我们前面的知识已经不能解决林,因为不知道会有什么单词,要确定是否重复,就要先知道第一个单词是什么,好在正则表达式可以将匹配成功的模式的某部分进行存储供以后使用这一能力。

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


后向引用 用于重复搜索前面某个分组匹配的文本。例如,\1代表分组1匹配的文本

如“\b(\w+)\b\s+\1\b”可以用来匹配重复的单词,“\b(\w+)\b”匹配一个单词,匹配到的结果存储到编号为1的分组,然后是1个或多个空格,最后“\1”代表前面分组1匹配到的单词

var patt=/\b(\w+)\b\s+\1\b/
alert( patt.test("hi hi"))     //返回true
alert( patt.test("hi boy"))    //返回false



-END-