有一段html代码 "内容1-->内容2-->内容3"  (“-->”为分隔标志)
那么正则表达式怎样写才可以获取“-->内容3”我这样写了:
  re = new RegExp("-->(.|\\n)*内容3","g")可是获取到的是“-->内容2-->内容3”

解决方案 »

  1.   

    补充,我是用match:  aa="内容1-->内容2-->内容3"
      re = new RegExp("-->(.|\\n)*内容3","g")
      document.write (aa.match(re))
      

  2.   

    var aa="内容1-->内容2-->内容3"
      re = new RegExp("-->内容3","g")
      alert(aa.match(re))
      

  3.   

    用ASP如下:dim refStr,r
    refStr="内容1-->内容2-->内容3"
    r=split(refStr,"-->")
    response.write "The last one is : " & r(ubound(r))
      

  4.   


    晕哦,不是我想要的。可能我的表达有误,更正如下:有一段html代码 " *<!--a-->*<!--b-->*<!--3--> " (“*”为不包含“-->”任何字符组合,“-->”为分隔标志,a,b 都是动态的数字)
    那么正则表达式怎样写才可以获取“*<!--3-->”我这样写了:
      aa=*<!--a-->*<!--b-->*<!--3--> 
      re = new RegExp("-->(.|\\n)*<!--3-->","g")
      document.write (aa.match(re))可是获取到的是“-->*<!--b-->*<!--3-->”
      

  5.   

    很无聊的做法var aa="*<!--f-->*<!--h-->*<!--m-->*<!--a-->*<!--b-->*<!--3-->";
      re = /-->(.|\\n)+<!--3-->/g;
      var index=-1;
      while(aa.search(re)!=-1){
       index=aa.search(re);
       aa=aa.substr(index+3);
      }
      alert(aa);
      

  6.   

    aa="sadfsaf<!--a-->sdfsadf<!--b-->aaaaaaaaaaaa<!--3-->"; 
    alert(aa.match(/-->((?:(?!-->).)+?)<!--3-->/g));
      

  7.   

    呵呵,楼上好劲,就是我所要的,可惜不大明白,哎,?:(?!-->). 这里搞晕人,看了语法解释还是不明白。(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 (?!pattern) 负向预查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始  这样的解释,不明不白。
    楼上的楼上,确实也是个方法,谢谢
      

  8.   


    晕,看了这帖才明白楼主的需求,JavaScript中是不支持反向预搜索或者叫逆序环视这种语法的
    (?<=expression)
    (?<!expression)<textarea id="result" rows="10" cols="100"></textarea>
    <script type="text/javascript"> 
        var aa="*<!--a-->*<!--b-->*<!--3-->*<!--c-->*<!--d-->*<!--e-->*<!--3-->*<!--f-->";
        var re = /(?:^|-->)((?:(?!-->).)*<!--3-->)/g;
        var result;
        while ((result = re.exec(aa)) != null) 
        {
            document.getElementById("result").value += result[1] + "\n";
        }
    </script>关于环视,可以看下我的博客
    环视(Lookaround)