还是关于我之前问过您的哪个问题:a = "<!--{readDB(1,2|3)}-->任意内容<!--{readDB(2,4|5)}-->part1<!--{/readDB}-->"
要求,我只想匹配出成对的标签 <!--{readDB(2,4|5)}-->part1<!--{/readDB}-->部分。至于第一个没有与之结束的 <!--{/readDB}--> 则不予以处理注意,1、里面的数字全部是变化的, 
2、一个 page 中可能还有 N 多个 类似的成对标签!
==========================================================
新问题:1、<!--{/readDB}--> 如果中间有了空格(除了空格不会出现其他任何字符),如 <!--{ /readDB }--> ,因为您用了 \b ,则无法完成2、其实在 <!--{readDB(2,4|5)}--> <!--{cyc()}-->part1(这部分内容肯定是不一样的)<!--{/cyc}--><!--{/readDB}-->我还想将 <!--{cyc()}-->...<!--{/cyc}--> 这组标签,并想通过 SubMatches 的方法也能提取出来!!!3、VBScript望赐教!!

解决方案 »

  1.   

    VBScript的不会,只给个javascript的。
    <script language="javascript">
    //var re = new RegExp('(<!--\s*\{readDB.*?/readDB\}-->)');
    var re1 = new RegExp('<!--\s*\{readDB(?![^/]+readDB).*/readDB\}-->');
    var str= '<!--{readDB(1,2|3)}-->任意内容<!--{readDB(2,4|5)}--><!--{cyc()}-->part1(这部分内容肯定是不一样的)<!--{/cyc}--><!--{/readDB}-->';
    var ret;
    if(ret = re1.exec(str)) {
    alert(ret[0]);
    }
    var re2 = new RegExp('<!--\s*\{cyc(?![^/]+cyc).*/cyc\}-->');
    if(ret = re2.exec(ret[0])) {
    alert(ret[0]);
    }
    </script>