龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

正则表达式匹配html标签实例

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
文章详细的介绍了关于html标签的几个特别的特点,然后根据它们特点作出相对应的处理,下面是一个不错的实例,有需要的同学看看。 html标签有以下几个特别的特点: 1. 如果有属性,那
文章详细的介绍了关于html标签的几个特别的特点,然后根据它们特点作出相对应的处理,下面是一个不错的实例,有需要的同学看看。

html标签有以下几个特别的特点:

1. 如果有属性,那么它之前肯定有空格。

2. 收尖括号的前面一定是双引号,或者双引号加上少许空格

根据这两个特点,我写了一个最蛋疼的html标签的正则表达式如下:

 代码如下

 @"<(!|/)?w+( ((.|n)*?"")?)? *>"


第二个问号是指贪婪模式找到收尖括号即停止,

第三个问号是指如果出现属性,则一定是以双引号结尾的,

第四个问号是指有可能不出现属性。

第一个空格是指第一个属性的前面有一个空格,

第二个空格指的是最后一个属性的后面可能会有空格。

这里面出现了两个双引号的并列,那就是双引号在有@符号里面的写法,并非",而要写成""。
这个标签能完美匹配上面的那个例子,以及我爬网页时出现的其它各种情况。


实例

 代码如下

<textarea id="htmlCode" rows="5" cols="50">
<namespace:span id="1">'


>" name=  spanName    />
<span id="2">      
 <span id="3" />
 <span id="4">
  <span></span>
 </span>
 <span id="6" />
 <div></div>
</span>
<div>
 <div></div>
</div>
<span id="5"></span>
</textarea>
<br />

<script>
function htmlTag()
{
 re = /<(/s*)?((w+:)?w+)(w+(s*=s*((["'])(\["'tbnr]|[^7])*?7|w+)|.{0})|s)*?(/s*)?>/ig
 return htmlCode.value.match(re)
}
</script>
<button onclick="alert(htmlTag().join('n------------------------------------n'))">匹配</button>

我也只能写成这样了有更好方法的朋友可以给建义


精彩图集

赞助商链接