最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
javascript正则表达式各种链接匹配问题总结
时间:2012-08-29 编辑:简简单单 来源:一聚教程网
匹配源代码中的链接
能够匹配HTML代码中链接的正则。
原帖正则:
/.+?/g 感觉有点严格,首先要有,而且href属性可以是一个或者多个除换行外任意字符(非贪婪)。后面是.+?,一个或者多个除换行外任意字符(非贪婪),再加上结束标签。
有个问题,如果a的起始标签最后有空格,或者除了href还有其它属性的话,上面的正则就不能匹配这个链接了。
例如:
代码如下 | 复制代码 |
…… 重写正则: / 第一个(s*w*?=".+?")* |
可以匹配一个属性,属性前面可能有或者没有多余的空格,用s*匹配;属性名肯定是单词字符,用w*?匹配;=".+?"就是匹配属性值了非换行字符若干个;整个括号外面加个*表示可能有任意多个属性。
(s*href=".+?")
匹配href,它也是一个属性,所以只要把上面子正则表达式中的w修改为href=就行了。
(s*w*?=".+?")*重复第一个子正则表达式,再次接受任意个属性。
s*>,属性最后再加上若干个空格和>。
[sS]*?,链接的文字,可能有任何字符组成,若干个,非贪婪。
最后是结束标签。
补充:属性名和=之间,以及=和属性值之间也可能有空格。所以要再加上几个s*。
最后的实例代码如下:
代码如下 | 复制代码 |
会把所有的链接在页面直接显示出来。注意,
本帖遗留问题:如何执行从右到左的匹配。貌似JS或者VBS没有提供这个功能2、JS或者VBS不支持 后行断言。。用什么方法实现这个功能。
匹配链接的文字
代码如下 | 复制代码 |
/
|
正则判断标签是否闭合
例如:
p的内容,同样也是没闭合的标签。
从简单的正则开始,先匹配起始标签
/<[a-z]+/i 再加上若干属性:
/<[a-z]+(s*w*?s*=s*".+?")*/i 下面就到关键点了,标签的闭合。标签可能有两种方式闭合,
或者是
xxx
。(s*/>)
匹配img类的结束,即/>。
(s*?>[sS]*?1>)
匹配p类标签的结束标签。>
是其实标签末尾,之后是标签内容若干个任意字符,最后的1>就是结束标签了。
加上一个或就可以解决了,最后的完整正则表达式:
整个正则:
/<([a-z]+)(s*w*?s*=s*".+?")*(s*?>[sS]*?1>|s*/>)/i
拿这个正则,只要匹配到了就表示闭合,没匹配到则没有闭合。不过没有考虑相同标签嵌套的问题,例如
也被判断为合格,可以通过把最后的匹配p类结束标签写成子正则表达式,并且更改为非贪心,然后在匹配结果中检查是否成对。正则如下:
/<([a-z]+)(s*w*?s*=s*".+?")*(s*?>[sS]*?(1>)+|s*/>)/i
用正则获得指定标签的内容
来源:求一正则
有如下代码:
代码如下 | 复制代码 |
|
基本正则:
代码如下 | 复制代码 |
/ |
首先是title标签,内容为任意字符若干个,然后是title结束标签。这个正则已经能匹配到所有的title标签。
首先,我简单地修改了一下原正则:
代码如下 | 复制代码 |
/ |
因为title里面不应该再嵌有其它标签,这个正则同样是匹配所有标题的内容,最后再加上不去匹配channel中的title。整个正则如下:
代码如下 | 复制代码 |
/ |
表示要匹配字符串的后面不能跟着若干个空格和一个channel的结束标签。
-
上一个: js用户名正则的正则表达式总结
-
下一个: 正则判断是否为数字与字母的混合js代码
相关文章
- shell脚本中用正则表达式匹配IP及Email 06-17
- javascript匹配车牌号正则表达式 05-22
- javascript中使用exec进行正则表达式全局匹配详解 11-28
- 正则表达式 模式匹配 Javascript 02-26
- HTML简单购物数量小程序代码展示 10-31
- html canvas实现弹幕功能 10-31
热门栏目
-
php教程
php入门 php安全 php安装 php常用代码 php高级应用 -
asp.net教程
基础入门 .Net开发 C语言 VB.Net语言 WebService -
手机开发
安卓教程 ios7教程 Windows Phone Windows Mobile 手机常见问题 -
css教程
CSS入门 常用代码 经典案例 样式布局 高级应用 -
网页制作
设计基础 Dreamweaver Frontpage js教程 XNL/XSLT -
办公数码
word excel powerpoint 金山WPS 电脑新手 -
jsp教程
Application与Applet J2EE/EJB/服务器 J2ME开发 Java基础 Java技巧及代码