万能Url正则表达式[http,ftp,news,telnet.....]——史上最全Url正则表达式(基于RFC1738)
2009-11-01 14:25
204 查看
最近换了份工作,很少来园子里转了。
现在做的是SDET,测试协议,感觉还是没有应用开发有意思哦~~~~~~
由于工作需要写了一个包括所有Url的正则表达式,用来验证返回的Url是否符合RFC1738规定。
有兴趣的同学可以去看RFC1378关于Url部分的介绍(http://www.ietf.org/rfc/rfc1738.txt),本文中的代码是按其规定编写的。
在没有了解RFC1738的时候,一直以为Url的正则表达式很简单,没想到Url有这么多分类,更没想到一个普通的http的正则表达式也不是那么简单。
以下是我搜到的关于http的正则表达式:
+/.)+[/w-]+(/[/w]http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
当然这已经满足大部分人的需求了,但是如果需要严格的验证的话还是要符合RFC1738了。
Url包括Http,Ftp,News,Nntpurl,Telnet,Gopher,Wais,Mailto,File,Prosperurl和Otherurl。
呵呵,废话不多说了,上代码
Otherurl#region Otherurl
//otherurl equal genericurl
string urlpath = String.Format(@"(({0})*)", xchar);
string scheme = String.Format(@"(({0}|{1}|\+|-|\.)+)", lowalpha, digit);
string ip_schemepar = String.Format(@"(//{0}(/{1}){{0,1}})", login, urlpath);
string schemepart = String.Format(@"(({0})*|{1})", xchar, ip_schemepar);
string genericurl = String.Format(@"{0}:{1}", scheme, schemepart);
string otherurl = genericurl;
#endregion
有了Pattern剩下的就简单多了,无非就是正则表达式的验证了,以Http为例:
Http的pattern为string httpurl,假设要验证的Url为url,所以验证url的代码如下:
Regex regex = new Regex(httpurl);
bool isMatchHttp = regex.IsMatch(url);
呵呵,感谢大家观赏,今天就写到这里吧~~~~~~
FYI.
现在做的是SDET,测试协议,感觉还是没有应用开发有意思哦~~~~~~
由于工作需要写了一个包括所有Url的正则表达式,用来验证返回的Url是否符合RFC1738规定。
有兴趣的同学可以去看RFC1378关于Url部分的介绍(http://www.ietf.org/rfc/rfc1738.txt),本文中的代码是按其规定编写的。
在没有了解RFC1738的时候,一直以为Url的正则表达式很简单,没想到Url有这么多分类,更没想到一个普通的http的正则表达式也不是那么简单。
以下是我搜到的关于http的正则表达式:
+/.)+[/w-]+(/[/w]http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
当然这已经满足大部分人的需求了,但是如果需要严格的验证的话还是要符合RFC1738了。
Url包括Http,Ftp,News,Nntpurl,Telnet,Gopher,Wais,Mailto,File,Prosperurl和Otherurl。
呵呵,废话不多说了,上代码
Otherurl#region Otherurl
//otherurl equal genericurl
string urlpath = String.Format(@"(({0})*)", xchar);
string scheme = String.Format(@"(({0}|{1}|\+|-|\.)+)", lowalpha, digit);
string ip_schemepar = String.Format(@"(//{0}(/{1}){{0,1}})", login, urlpath);
string schemepart = String.Format(@"(({0})*|{1})", xchar, ip_schemepar);
string genericurl = String.Format(@"{0}:{1}", scheme, schemepart);
string otherurl = genericurl;
#endregion
有了Pattern剩下的就简单多了,无非就是正则表达式的验证了,以Http为例:
Http的pattern为string httpurl,假设要验证的Url为url,所以验证url的代码如下:
Regex regex = new Regex(httpurl);
bool isMatchHttp = regex.IsMatch(url);
呵呵,感谢大家观赏,今天就写到这里吧~~~~~~
FYI.
相关文章推荐
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等 本文出处:http://www.cnblogs.com/zxin/archive/2013/01/26/2877765.html#2
- python使用正则表达式解析http url
- 判断网址的正则表达式 ((http|ftp|https)://)(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0
- 匹配http url 正则表达式
- 17种正则表达式 [转贴自http://news.dvbbs.net/infoView/Article_2842.html]
- js最强的匹配网址-url的正则表达式:匹配www,http开头的一切网址
- django 基于正则表达式的url
- PHP表单常用正则表达式(URL、HTTP、手机、邮箱等)
- Django框架学习笔记(7.基于正则表达式的URL)
- Django基于正则表达式的URL(2)
- java-下载图片(正则表达式、HttpURLConnection、流、socket综合运用)
- Django基于正则表达式的URL(2)
- JS通用表单验证函数,基于javascript正则表达式http://www.ccvita.com/60.html
- Django基于正则表达式的URL(1)
- ASP中正则表达式的应用 [收藏自http://news.dvbbs.net/infoView/Article_1833.html]
- 一只简单的网络爬虫(基于linux C/C++)————利用正则表达式解析页面
- iOS url的正则表达式
- [导入]超强匹配url地址的正则表达式
- JS通用表单验证函数,基于javascript正则表达式 [转]
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等