求一个正则 求一个正则表示<table>开头</table>结尾中间任意字符的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /<table>(\n|\r|.)*?<\/table>/ig;不支持嵌套 昂。。真郁闷以后写变量不这么乱起名字了。。长教训了。。原先写的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> <table id="login" 开头</table> 结尾中间任意注:只要正则 哈。。里面乱乱的非非常时期就不看了。。修改。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();} 我只要表示 <table id="login" 开头</table> 结尾中间任意的一个正则表达式 /<table\s+id="login"[^>]*>(\n|\r|.)*?<\/table>/ig;一个正则是不可能支持嵌套的。。JS的话。。貌似PHP里有个什么R。。 好像在 .net 里面不能用阿 .net没用过。。都转义下。/\<table\s+id="login"[^\>]*\>(\n|\r|.)*?\<\/table\>/;要设置忽略大小写和查找全部。。 /<table\s+id="login">(.*?)<\/table>/is .net里面有平衡组定义,可以支持嵌套 JS按格式输出商品标签 siblings是什么意思 如何控制div内代码??? [原创]永不过期的网页: jqtreetable 数据多加载慢怎么解决 我的网页上有5个type=“file”的控件,我怎么才能判断我点击了哪个??? 需要修改什么参数? form可以做为parameter传递吗? 各位帮我看一下,如何打印对象 微信小程序的一个问题,求大神回答。 js 调用问题 js动态控制消息框弹出问题
不支持嵌套
长教训了。。
原先写的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>
</table> 结尾
中间任意注:只要正则
修改。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();
}
<table id="login" 开头
</table> 结尾
中间任意的
一个正则表达式
一个正则是不可能支持嵌套的。。JS的话。。貌似PHP里有个什么R。。
要设置忽略大小写和查找全部。。