(……续例8)

例9:捕获组匹配

  1. void function reg_09()  
  2. {  
  3.     var s1 = "Live for nothing,die for something",  
  4.         s2 = "Live for nothing,die for somebody",  
  5.         s3 = "Live for noabcde,die for someabcde";  
  6.     var r = /^Live ([a-z]{3}) no([a-z]{5}),die \1 some\2$/g;  
  7.     for (i = 1; i <= 3; i++)  
  8.     {  
  9.         t = "alert(r.exec(s" + i + "));" 
  10.         eval(t);  
  11.     }  

这个例子和前面的例2是一样的,对匹配内容用()符号进行分组,以便后面引用,不过这次有两个组,因此需要用\1\2符号进行引用。
行9:这次没有使用String对象的match()方法,而是使用了正则表达式对象的exec()方法,它们的效果是类似的,不过exec()方法会将组中的内容显示出来,这样的组称为捕获组。
运行结果:s2是无法匹配的。

(未完待续……)