URL正则表达式大全

在没有了解RFC1738的时候,一直以为Url的正则表达式很简单,没想到Url有这么多分类,更没想到一个普通的http的正则表达式也不是那么简单。

以下是我搜到的关于http的正则表达式:

  1. http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
复制代码

当然这已经满足大部分人的需求了,但是如果需要严格的验证的话还是要符合RFC1738了。

Url包括Http,Ftp,News,Nntpurl,Telnet,Gopher,Wais,Mailto,File,Prosperurl和Otherurl。

呵呵,废话不多说了,上代码

  1. #region Http
  2.             string lowalpha = @"[a-z]";
  3.             string hialpha = @"[A-Z]";
  4.             string alpha = String.Format(@"({0}|{1})", lowalpha, hialpha);
  5.             string digit = @"[0-9]";
  6.             string safe = @"(\$|-|_|\.|\+)";
  7.             string extra = @"(!|\*|'|\(|\)|,)";
  8.             string hex = String.Format(@"({0}|A|B|C|D|E|F|a|b|c|d|e|f)", digit);
  9.             string escape = String.Format(@"(%{0}{0})", hex);
  10.             string unreserved = String.Format(@"({0}|{1}|{2}|{3})", alpha, digit, safe, extra);
  11.             string uchar = String.Format(@"({0}|{1})", unreserved, escape);
  12.             string reserved = @"(;|/|\?|:|@|&|=)";
  13.             string xchar = String.Format(@"({0}|{1}|{2})", unreserved, reserved, escape);
  14.             string digits = String.Format(@"({0}+)", digit);
  15.             string alphadigit = String.Format(@"({0}|{1})", alpha, digit);
  16.             string domainlabel = String.Format(@"({0}|{0}({0}|-)*{0})", alphadigit);
  17.             string toplabel = String.Format(@"({0}|{0}({1}|-)*{1})", alpha, alphadigit);
  18.             string hostname = String.Format(@"(({0}\.)*{1})", domainlabel, toplabel);
  19.             string hostnumber = String.Format(@"{0}\.{0}\.{0}\.{0}", digits);
  20.             string host = String.Format(@"({0}|{1})", hostname, hostnumber);
  21.             string port = digits;
  22.             string hostport = String.Format(@"({0}(:{1}){{0,1}})", host, port);
  23.             string hsegment = String.Format(@"(({0}|;|:|@|&|=)*)", uchar);
  24.             string search = String.Format(@"(({0}|;|:|@|&|=)*)", uchar);
  25.             string hpath = String.Format(@"{0}(/{0})*", hsegment);
  26.             string httpurl = String.Format(@"http://{0}(/{1}(\?{2}){{0,1}}){{0,1}}", hostport, hpath, search);
  27.             #endregion
复制代码
  1. #region Ftp
  2.             string user = String.Format(@"(({0}|;|\?|&|=)*)", uchar);
  3.             string password = String.Format(@"(({0}|;|\?|&|=)*)", uchar);
  4.             string login = String.Format(@"(({0}(:{1}){{0,1}}@){{0,1}}{2})", user, password, hostport);
  5.             string fsegment = String.Format(@"(({0}|\?|:|@|&|=)*)", uchar);
  6.             string ftptype = @"(A|I|D|a|i|d)";
  7.             string fpath = String.Format(@"({0}(/{0})*)", fsegment);
  8.             string ftpurl = String.Format(@"ftp://{0}(/{1}(;type={2}){{0,1}}){{0,1}}", login, fpath, ftptype);
  9.             #endregion
复制代码
  1. #region News
  2.             string group = String.Format(@"({0}({0}|{1}|-|\.|\+|_)*)", alpha, digit);
  3.             string article = String.Format(@"(({0}|;|/|\?|:|&|=)+@{1})", uchar, host);
  4.             string grouppart = String.Format(@"(\*|{0}|{1})", group, article);
  5.             string newsurl = String.Format(@"(news:{0})", grouppart);
  6.             #endregion
复制代码
  1. #region Nntpurl
  2.             string nntpurl = String.Format(@"nntp://{0}/{1}(/{2}){{0,1}}", hostport, group, digits);
  3.             #endregion
复制代码
  1. #region Telnet
  2.             string telneturl = String.Format(@"telnet://{0}/{{0,1}}", login);
  3.             #endregion
复制代码
  1. #region Gopher
  2.             string gtype = xchar;
  3.             string selector = String.Format(@"({0}*)", xchar);
  4.             string gopherplus_string = String.Format(@"({0}*)", xchar);
  5.             string gopherurl = String.Format(@"gopher://{0}(/({1}({2}(%09{3}(%09{4}){{0,1}}){{0,1}}){{0,1}}){{0,1}}){{0,1}}", hostport, gtype, selector, search, gopherplus_string);
  6.             #endregion
复制代码
  1. #region Wais
  2.             string database = String.Format(@"({0}*)", uchar);
  3.             string wtype = String.Format(@"({0}*)", uchar);
  4.             string wpath = String.Format(@"({0}*)", uchar);
  5.             string waisdatabase = String.Format(@"(wais://{0}/{1})", hostport, database);
  6.             string waisindex = String.Format(@"(wais://{0}/{1}\?{2})", hostport, database, search);
  7.             string waisdoc = String.Format(@"(wais://{0}/{1}/{2}/{3})", hostport, database, wtype, wpath);
  8.             string waisurl = String.Format(@"{0}|{1}|{2}", waisdatabase, waisindex, waisdoc);
  9.             #endregion
复制代码
  1. #region Mailto
  2.             string encoded822addr = String.Format(@"({0}+)", xchar);
  3.             string mailtourl = String.Format(@"mailto:{0}", encoded822addr);
  4.             #endregion
复制代码
  1. #region File
  2.             string fileurl = String.Format(@"file://({0}{{0,1}}|localhost)/{1}", host, fpath);
  3.             #endregion
复制代码
  1. #region Prosperourl
  2.             string fieldname = String.Format(@"({0}|\?|:|@|&)", uchar);
  3.             string fieldvalue = String.Format(@"({0}|\?|:|@|&)", uchar);
  4.             string fieldspec = String.Format(@"(;{0}={1})", fieldname, fieldvalue);
  5.             string psegment = String.Format(@"(({0}|\?|:|@|&|=)*)", uchar);
  6.             string ppath = String.Format(@"({0}(/{0})*)", psegment);
  7.             string prosperourl = String.Format(@"prospero://{0}/{1}({2})*", hostport, ppath, fieldspec);
  8.             #endregion
复制代码
  1. #region Otherurl
  2.             //otherurl equal genericurl
  3.             string urlpath = String.Format(@"(({0})*)", xchar);
  4.             string scheme = String.Format(@"(({0}|{1}|\+|-|\.)+)", lowalpha, digit);
  5.             string ip_schemepar = String.Format(@"(//{0}(/{1}){{0,1}})", login, urlpath);
  6.             string schemepart = String.Format(@"(({0})*|{1})", xchar, ip_schemepar);
  7.             string genericurl = String.Format(@"{0}:{1}", scheme, schemepart);
  8.             string otherurl = genericurl;
  9.             #endregion
复制代码

有了Pattern剩下的就简单多了,无非就是正则表达式的验证了,以Http为例:

Http的pattern为string httpurl,假设要验证的Url为url,所以验证url的代码如下:

  1. Regex regex = new Regex(httpurl);
  2. bool isMatchHttp = regex.IsMatch(url);
复制代码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$"。 只能输入n位的数字:"^\d{n}$"。 只能输入至少n位的数字:"^\d{n,}$"。 只能输入m~n位的数字:。"^\d{m,n}$" 只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。 只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。 只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。 只能输入非零的正整数:"^\+?[1-9][0-9]*$"。 只能输入非零的负整数:"^\-[1-9][]0-9"*$。 只能输入长度为3的字符:"^.{3}$"。 只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。 只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。 只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。 只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。 只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。 验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。 验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。 只能输入汉字:"^[\u4e00-\u9fa5]{0,}$" 验证Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。 验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。 验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。 验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。 验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。 验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值