【发布时间】:2023-08-02 13:11:02
【问题描述】:
([\w-]+.)+[\w-]+(/[\w-./?%&=]*)? 我使用上面的表达式进行 URL 验证。但问题是当我只给出“www.yahoo”并按下保存按钮时,我没有收到任何错误消息。请提供解决方案。
谢谢
【问题讨论】:
-
这里(有点)重复的帖子:*.com/questions/827557/…
标签: asp.net regex asp.net-mvc-3
([\w-]+.)+[\w-]+(/[\w-./?%&=]*)? 我使用上面的表达式进行 URL 验证。但问题是当我只给出“www.yahoo”并按下保存按钮时,我没有收到任何错误消息。请提供解决方案。
谢谢
【问题讨论】:
标签: asp.net regex asp.net-mvc-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);
【讨论】: