<html>
<head>
</head>
<body>
<script language="JavaScript">
var a='<div id="siteDataCount"><div></div><div><span class="cs">123</span></div></div><div><span class="cs">456</span></div>'
alert('')
alert(a.match(/<[^>]*? class=\"cs\">[^<]*?<\/[^>]*?>/g).length)
alert(a.match(/<[^>]*? class=\"cs\">[^<]*?<\/[^>]*?>/g)[0])
alert(a.match(/<[^>]*? class=\"cs\">[^<]*?<\/[^>]*?>/g)[1])
//alert(/<[^>]*? class=\"cs\">[^<]*?<\/[^>]*?>/.match(a))
</script></body>
</html>
<head>
</head>
<body>
<script language="JavaScript">
var a='<div id="siteDataCount"><div></div><div><span class="cs">123</span></div></div><div><span class="cs">456</span></div>'
alert('')
alert(a.match(/<[^>]*? class=\"cs\">[^<]*?<\/[^>]*?>/g).length)
alert(a.match(/<[^>]*? class=\"cs\">[^<]*?<\/[^>]*?>/g)[0])
alert(a.match(/<[^>]*? class=\"cs\">[^<]*?<\/[^>]*?>/g)[1])
//alert(/<[^>]*? class=\"cs\">[^<]*?<\/[^>]*?>/.match(a))
</script></body>
</html>
实际上CSS定义可能比这个还复杂,如 #siteDataCount span.cs{}等,
mingxuan3000(铭轩) 的方法只能得出带有 class="cs" 的HTML元素,而没有限定是在 元素siteDataCount 里的标签~~ 不过也挺感谢的~~
要是有不匹配的就糟了...
我觉得那样就不可能用正则来匹配了...
所以如果你想要它能对付这种情况你还是想想怎样用上DOM吧...
想ing...
匹配后可能的样式为:
<div id="siteDataCount">
<div></div>
<div>
<span class="cs" style="加上边框"></span>
</div>
</div>
<div><span class="cs"></span></div>
<html>
<head>
</head>
<body>
<div id="siteDataCount">
<div></div>
<div>
<span class="cs">123</span>
</div>
</div>
<div><span class="cs">456</span></div>
<script language="JavaScript">
alert('')
//alert(document.getElementById("siteDataCount").innerHTML.toString().match(/<[^>]*? class=\"cs\">[^<]*?<\/[^>]*?>/g)[0])var bb=document.getElementsByTagName("span")
alert('')
for(var i=0;i<bb.length;i++){
//alert('')
alert(bb[i].className)
}
</script></body>
</html>正则不好匹配
下面这样也不行
document.getElementById("siteDataCount").innerHTML.toString().match(/<[^>]*? class=\"cs\">[^<]*?<\/[^>]*?>/g)[0]class="cs"里面可能有如下的情况,太复杂了
<span class="cs"><div>123</div><span> 123</span></span>
#siteDataCount .cs,
div#Temp1 ul li.cur em,
table.desc .module span
{}而class也可能有多个CSS,<span class="c2 cs s1"></span>,通常大型网站的网页都比较大,解析一组CSS可能耗费的时间比较长~~
如:
<span class="cs"><div>123</div><span> 123</span></span>
正则:<span class="cs">(.|\n)*
只要确认这个标签是在 siteDataCount 下我就可以实行替换了,<span class="cs" style="边框样式">
再对上面的正则
<div id="siteDataCount"><span class="cs">ATEXT</span><div></div><div>
<span class="cs">BTEXT</span><div></div>
那上面那种解析就不是只限定在siteDataCount 里的cs了,外面那层BTEXT的也被包函进去了~~
有可能是 .siteDataCount .cs,那这时就不能用 getElementById了,<div class='siteDataCount'><span class="cs"></span></div><span class='cs'></span>如果碰到是单一的没有嵌套的标签到是可以这样写正则:
<div class='siteDataCount'><[^>]*? class=\'cs\'>(.|\n)*?<\/span></div>,可如果里面有嵌套的标签的话,如<div class='siteDataCount'><div></div><span class="cs"></span></div>,就不能正确匹配到了~