求一个正则
表示<table>开头
</table>结尾
中间任意字符的

解决方案 »

  1.   

    /<table>(\n|\r|.)*?<\/table>/ig;
    不支持嵌套
      

  2.   

    昂。。真郁闷以后写变量不这么乱起名字了。。
    长教训了。。
    原先写的code现在看基本完全陌生了。。但是这个code还是可以用的
    支持嵌套。。
    <script type="text/javascript">
    var Left = {
    Max : 0, //控制查找最大数
    o : true, //控制是否继续查找
    n : 0, c : 0, x : 0, //n记录字数,c记录未结束标记数, x无效未结束标记数
    d : new Array, //d记录所有没有结尾的标记
    a : new Array, //a记录所有匹配出的内容
    sd : function (a) {
    //set d
    Left.d[Left.d.length] = a;
    return "\xff";
    },
    ss : function () {
    //scan string
    var s = Left.a.join(""), a = s.split("\xff"), n = new Array;
    for (var i = 0 ; i < a.length ; i ++) {
    n[n.length] = a[i];
    if (i < a.length - 1) n[n.length] = Left.d[i];
    }
    return n.join("");
    },
    ex : function (b, c) {
    //exec
    var a = b || c;
    if (c) {
    if (Left.n < Left.Max) {
    if (a != "\xff") Left.n ++;
    Left.a[Left.a.length] = a;
    }
    } else {
    if (/^<\//.test(a)) {
    if (Left.n < Left.Max) {
    Left.a[Left.a.length] = a;
    } else if (Left.x == 0 && Left.c > 0) {
    Left.a[Left.a.length] = a;
    if (Left.c == 1) Left.o = false;
    } else Left.x --;
    Left.c --;
    } else {
    if (Left.n < Left.Max)
    Left.a[Left.a.length] = a;
    else
    Left.x ++;
    Left.c ++;
    }
    }
    },
    parse : function (s, n) {
    //select
    var p = /(<[^>]+>)|([\S\s])/g;
    Left.n = Left.c = Left.x = Left.d.length = Left.a.length = 0, Left.o = true;
    Left.Max = n;
    s = s.replace(/<[^>]+\/>/g, Left.sd);
    while(Left.o && p.exec(s))
    Left.ex(RegExp.$1, RegExp.$2);
    //alert(Left.a);
    return Left.ss();
    }
    };function show(s, n) {
    alert(s + " \n\n\n" + Left.parse(s, n));
    }
    var s = '<table color="red" size="2"><strong><img src="csdn" \/>String<\/strong><b><img src="csdn" \/>String</b></font><div><\/table>';
    show(s, s.length);
    </script>
      

  3.   

    <table id="login"   开头
    </table>    结尾
    中间任意注:只要正则
      

  4.   

    哈。。里面乱乱的非非常时期就不看了。。
    修改。parse方法即可获取所有的table为一个串。。
    parse : function (s, n) {
    //select
    var p = /(<[^>]+>)|([\S\s])/g;
    Left.n = Left.c = Left.x = Left.d.length = Left.a.length = 0, Left.o = true;
    Left.Max = n;
    if (!/.(?=<table[^>]*>)/i.test(s)) return;
    s = RegExp.rightContext;
    if (!/(<\/table[^>]*>)(?!.*?<table[^>]*>)/i.test(s)) return;
    s = RegExp.leftContext + RegExp.$1;
    s = s.replace(/<[^>]+\/>/g, Left.sd);
    while(Left.o && p.exec(s))
    Left.ex(RegExp.$1, RegExp.$2);
    //alert(Left.a);
    return Left.ss();
    }
      

  5.   

    我只要表示  
    <table id="login"   开头
    </table>    结尾
    中间任意的
    一个正则表达式
      

  6.   

    /<table\s+id="login"[^>]*>(\n|\r|.)*?<\/table>/ig;
    一个正则是不可能支持嵌套的。。JS的话。。貌似PHP里有个什么R。。
      

  7.   

    好像在 .net 里面不能用阿
      

  8.   

    .net没用过。。都转义下。/\<table\s+id="login"[^\>]*\>(\n|\r|.)*?\<\/table\>/;
    要设置忽略大小写和查找全部。。
      

  9.   

    /<table\s+id="login">(.*?)<\/table>/is
      

  10.   

    .net里面有平衡组定义,可以支持嵌套