用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - javascript代码库

常用的匹配HTML标签的js正则表达式

2014-02-03 作者: 小蜜锋举报

[javascript]代码库

匹配HTML标记的正则表达式  
  
先说说网上流传的版本:  
<(\S*?)[^>]*>.*?</\1>|<.*? />  
*?  *表示0个或多个,?表示0个或1个,两个叠加起来标识0个多个,与*的功能重叠  
(\S*?)  标签的长度必须大于0,因此不能用*?   
|<.*?\/>  没有分组,无法获取以<div/>这种自关闭格式书写的标签  
</\1>  
<.*? />   有的标签是不关闭的,比如<br><hr>,因此不能强制关闭  

修正如下:  
var rtag = /^<([a-z]+)\s*\/?>.*(?:<\/\1>)?$/i  
rtag.exec( '<-div></-div>') // null   
rtag.exec( '<div>abc') // ["<div>abc", "div"]  

这个表达式也不完善,比如第二条测试语句,这么写是为了能提取中包含了文本内容的标签,如果要严格匹配,可再次修改为:  
var rtag = /^<([a-z]+)\s*\/?> (?:<\/\1>)?$/i // 去掉了中间的.*  

这个正则的应用范围仅限于简单的标签匹配、提取,不能匹配嵌套标记。  


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...