如何反向引用正则表达式?
正则表达式在计算完以后,每一个分组都被保存到一个特殊的地方以备将来使用。这些存储在分组中的特殊值,称之为反向引用。
反向引用是按照从左到右遇到的左括号字符的顺序来创建和编号的。例如表达式(A?(B?(C?))),将产生编号从1-3的三个反向引用:
编号1: (A?(B?(C?)))
编号2: (B?(C?))
编号3: (C?)
反向引用一般有如下几种使用方法:
1. 使用正则表达式对象的test(),match()或search()方法,反向引用的值可以从RegExp构造函数中获取,如:
Var sToMatch = “#
Var reNumbers = /#(/d+)/;
renumbers.test(sToMatch);
alert(RegExp.$1); //输出123456789
2.还可以直接在定义分组的表达式中包含反向引用。这可以通过使用特殊的转移序列如/1、/2等来实现。例如:
Var sToMatch = “dogdog”;
Var reDogDog = /(dog)/1/;
Alert(reDogDog.test(sToMatch); //输出true
3.反向引用可以用在String对象的replace()方法中,这通过使用特殊字符序列$1,$2等来实现。例如:
function ReplaceDemo()
{
var r, re;
var s = "The quick brown fox jumped over the lazy yellow dog.";
re = /(/S+)(/s+)(/S+)/g;
r = s.replace(re, "$3$2$1"); //交换每一对单词。
return(r);
}
本文地址:http://www.45fan.com/a/question/68050.html