你这样用根本就没打算用()匹配到的内容.
写法也有些不妥,可以改为:
/.*((fox|dog) and (cat|mouse) and (dog|mouse) and (cat|dog) and (fox|(mouse)).*/gi;
功能应该是一样的.一般来说,$1-9已经够用了.
如果你想使用每次匹配得到的$i结果,建议你使用replace方法

解决方案 »

  1.   

    括号内容这样写(?:condition|condition)
    这样写, 括号就没分配 $n 之类的匹配结果.
      

  2.   

    javascript 中的正则表达式,最大可以 $1 - $99,var m = re.exec( string )$3:  m[3]
    $20: m[20]另外,在replace 的时候,也可以使用 $20 这样的用法的。
      

  3.   

    多谢梅雪香,这样是可以,只不过同一个正则表达式要使用好几次,效率上似乎划不来。btbtd:你的方法似乎没有作用啊。我都加上了还是不行。
    function MatchDemo()
    {
    var r, re;
    var s = " aa bb cc fox and cat and mouse and dog and fox dd eeee ";
    re = /.*(?:(?:(?:fox)|(?:dog)) and (?:(?:cat)|(?:mouse)) and (?:(?:dog)|(?:mouse)) and (?:(?:cat)|(?:dog)) and (?:(?:fox)|(?:mouse))).*/gi;
    if( re.test( s ) )
    {
    alert( RegExp.$10  )
    }

    }MatchDemo() ;
      

  4.   

    RegExp.$9 这种方法只能是最大 $9搂主可以使用:if((m = re.exec(s)) != null)
    {
            alert(m[10]);
    }