【问题标题】:Regular expression validation for URL in ASP.netASP.net 中 URL 的正则表达式验证
【发布时间】:2023-08-02 13:11:02
【问题描述】:

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

谢谢

【问题讨论】:

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


【解决方案1】:

嗯,我想那篇文章更多地与 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);

【讨论】:

    最近更新 更多