ASP.net中URL的正则表达式验证

时间:2011-07-23 01:11:29

标签: asp.net regex asp.net-mvc-3

([\ w - ] +。)+ [\ w - ] +(/ [\ w- ./?%&=]*)? 我使用上面的表达式进行URL验证。但问题是当我只给'www.yahoo'并按下保存按钮时我没有收到任何错误信息。请提供解决方案。

谢谢

1 个答案:

答案 0 :(得分:3)

好吧,我猜这个帖子与python有关。您也可以在ASP.NET中找到类似的东西。

但是如果你想自己解析它,你应该参考提供正则表达式的RFC 2396 (URI Generic Syntax)并将其分解为附录B中的组件:

  ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
   12            3  4          5       6  7        8 9
     

上面第二行中的数字仅供参考   可读性;它们表示每个参考点   子表达(即每个配对括号)。我们指的是   子表达式匹配的值为$。例如,匹配   上面的表达

  http://www.ics.uci.edu/pub/ietf/uri/#Related
     

导致以下子表达式匹配:

  $1 = http:
  $2 = http
  $3 = //www.ics.uci.edu
  $4 = www.ics.uci.edu
  $5 = /pub/ietf/uri/
  $6 = <undefined>
  $7 = <undefined>
  $8 = #Related
  $9 = Related
     

其中表示该组件不存在,如   是上例中查询组件的情况。   因此,我们可以确定四个组件的值和   片段为

  scheme    = $2
  authority = $4
  path      = $5
  query     = $7
  fragment  = $9
     

并且,在相反的方向上,我们可以重新创建URI引用     使用第5.2节第7步中的算法从其组件中获取。

修改

经过一段谷歌搜索,我在ASP.NET中找到了这个:System.Uri,例如:

Uri uri = new Uri("http://www.ics.uci.edu/pub/ietf/uri/#Related");
Console.WriteLine(uri.AbsoluteUri);
Console.WriteLine(uri.Host);