井井客

搜索

比较完整的正则表达式匹配网址URL、域名、路径

正则表达式是许多语言都支持的一个强大的关于字符串操作的功能,虽然不能做到所有语言通用,但是也不会相较太大。文章是从是网上搜索到的C语******则匹配,暂时先归类到Js正则匹配中了。

比较完整的正则表达式匹配网址URL、域名、路径

因为参考的是网上搜索的正则,所以部分我也拿了新浪的首页做了一个测试。

(1)正则匹配网址(URL网址,JS、CSS、Images网址)

(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?

匹配:
http://licaishi.sina.com.cn/web/plan?fr=f_sina_left
http://www.sina.com.cn/js/96/2015/home/chooseCars.js
不匹配:
www.sina.com
点评:能够匹配到大部分http、ftp、https开头的网址

^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)?((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.[a-zA-Z]{2,4})(\:[0-9]+)?(/[^/][a-zA-Z0-9\.\,\?\'\\/\+&%\$#\=~_\-@]*)*$

匹配:
http://auto.sina.com.cn/
http://m.weibo.com/web/cellphone.php#iphone
不匹配:
www.sina.com
点评:同上,算是上面的更精确版本。

^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$

匹配:
http://s.weibo.com/weibo/@@key@@
http://m.sina.com.cn/m/sinasports.shtml
不匹配:
sina.com
点评:同上,基本结果一差不多

(2)正则匹配本地文件路径

^([a-zA-Z]\:|\\\\[^\/\\:*?"<>|]+\\[^\/\\:*?"<>|]+)(\\[^\/\\:*?"<>|]+)+(\.[^\/\\:*?"<>|]+)$

匹配:
c:\Test.txt
\\server\shared\Test.txt
\\server\shared\Test.t
不匹配:
c:\Test
\\server\shared
\\server\shared\Test.?
点评:正则匹配文件路径,不匹配文件目录路径

^([a-zA-Z]\:)(\\[^\\/:*?<>"|]*(?<![ ]))*(\.[a-zA-Z]{2,6})$

匹配:
c:\dir\filename.txt
C:\di___r\fi_sysle.txt
不匹配:
c:\dir\file?name.txt
点评:只匹配文件路径并且路径不要带有特殊字符

(3)正则匹配域名

^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$
匹配:
regexlib.com
this.is.a.museum
3com.com
不匹配:
notadomain-.com
helloworld.c
.oops.org
点评:匹配到的区域后缀规则2-6位,域名规则则以数字英文开头与结尾。

来源:http://c.biancheng.net/cpp/html/1435.html

文章TAG:JS

作者:井井客整理来源:互联网
本文标题:比较完整的正则表达式匹配网址URL、域名、路径
本文链接:/c/2186.html

上一篇:IE各浏览器hack
下一篇:PS设置时间轴面板快捷键

文章分类

相关阅读

随便看看