邀朋友种豆,一起分享吧
喜欢购买正品行货?那就去品牌街

各种网址链接的正则表达式

来自:种豆 时间:2017-12-29 阅读:554次 原文链接

    本文收集了网址、超文本链接、图片链接、锚点链接、Email链接的各种超链接的正则表达式。

1.超文本链接

    超文本链接通常有如下几种格式:<a href="http://www.sowsoy.com">链接到外部网页</a>
<a href="malls.html">链接到内部网页</a>
<a href="innerPic.bmp">链接到图片</a>
<a href="#">空链接</a>超文本链接的正则表达式(?<=(?i)<a/s+[^>]*/s*(href)=)[^>]+?(?="|')(?#>[^>]+</a>)
超文本(含图片)链接的正则表达式(?<=(?i)<(a|img)/s+[^>]*/s*(href|src)=")[^>]+?(?="|')(?#>[^>]+</a>)
相关说明:  //获得<a空格(...)(空格)href="(...)"格式的连接  //(?<=(...)):是一个先前查看的格式,用来找到符合条件的格式,可以加入自己特定的搜索要求  //(?i)表示在查找的格式中忽略大小写  //<a表示格式头部,也可以写成这种格式:<(a|...)里面可以加入别的HTML标签,比如link,img,meta等  ///s+表示有至少一个空格  //[^>]*匹配此处有零个或者多个非>字符  ///s*有零个或者多个空格  //(href)=匹配标签href,要是还要匹配其他标签可以在括号内加入,比如name,src等  //[^>]+?("|')匹配真正的链接地址,以"或'结束,使用+表示需要匹配字符串,使用?用来表示在第一个"或'处结束。  //(?#...)表示注释  //[^>]+</a>用来输出链接之外的其他信息,在此处可以忽略

2.js脚本的超链接

    JS脚本超链接有如下几种格式,这几种格式使用上述的正则表达式不能正确判别。<a target=_top href="javascript:window.external.addFavorite('http://www.sowsoy.com','种豆网');">加入收藏</a>
<a href='#' onClick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.sowsoy.com');">设为首页</a>    这两行代码链接的获取最简单的办法是用该公式获取,为了获得完整的信息,进行贪婪性扩展:(?<=(?i)<(a|img)/s+[^>]*/s*(href|src)=("|'))[^>]+(?="|')    获取结果如下:javascript:window.external.addFavorite('http://www.sowsoy.com','种豆网');
onClick
="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.sowsoy.com');    然后,通过程序实现分析。

3.锚点链接

    锚点链接格式如下<a href="#C">pual</a> //链接到锚
<a name="C">pual</a> //定义锚分析:如果使用普通链接获取的表达式所得到锚链接,必然是如下格式:     #(url|name)这个之需要在程序分析的时候做出判断即可。

4.电子邮件链接

    电子邮件链接对应的格式通常如下:<a href="mailto:pual.k3@gamil.com">给我写信</a>    相应的正则表达式是?<=<a/s+[^>]*/s*(href)=")[^>]+?@[^>]+?(?='|")(?#[^>]+?</a>)  说明://使用@关键标记匹配邮件地址    但是如下非法格式无法识别:<a href="http://blog.163.com/activities/neteasebb/neteasebb.do?userName=yuki_lyy@126&index=0/">    于是进行如下改进:(?i)(?<=<a/s+[^>]*/s*(href)=")[^>]+?@[^>]+?(/.[a-zA-Z]{0,}){1,3}(?='|")    该正则表达式能够匹配超链接中任何邮件格式,但是无法获得邮件链接中附加的比如抄送、主题之类的信息,于是在后面加上附加信息的获取代码:[^>]+?()    则完整格式为:(?i)(?<=a/s+[^>]*/s*(href)=")[^>]+?@[^>]+?(/./w*){1,3}[^>]+?(?='|")

 
关于种豆 ┊ 联系我们 ┊ 免责声明 ┊ 发帖须知 ┊ 请提意见 ┊ 站点地图
本站为个人爱好兴趣分享网站,不代表本人观点,如有侵权请联系QQ3033380280进行处理
sowsoy.com 版权所有 Copyright©2010-2021 备案号:蜀ICP备2020025376号-3
Email:sowsoy#hotmail.com