正则表达式的反向引用

正则表达式在计算完以后,每一个分组都被保存到一个特殊的地方以备将来使用。这些存储在分组中的特殊值,称之为反向引用。

反向引用是按照从左到右遇到的左括号字符的顺序来创建和编号的。例如表达式(A?(B?(C?))),将产生编号从13的三个反向引用:

编号1(A?(B?(C?)))

 编号2(B?(C?))

 编号3(C?)

反向引用一般有如下几种使用方法:

1.              使用正则表达式对象的test(),match()search()方法,反向引用的值可以从RegExp构造函数中获取,如:

Var sToMatch = “# 123456789” ;

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);
  
  
}
  
  
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值