Skip to main content
 首页 » 编程设计

c#之正则表达式检测语法正确的 URL

2024年01月21日31yxwkf

这个问题在这里已经有了答案:





What is the best regular expression to check if a string is a valid URL?

(58 个回答)


7年前关闭。




我使用 Asp.net 4 和 C# Web 窗体。

在我的 Web 应用程序中,用户可以使用 TextBox 添加 URL。

我需要确保插入的每个值都有 语法正确的 URL 格式 (我不需要检查 URL 是否真的存在)。

因此,作为第一条规则,我想使用 CustomValidator Control 进行检查如果用户插入的输入在开头具有值字符串“http://”。

我的问题?

  • 你能提供一个正则表达式添加到我的 CustomValidator 控件中,它只允许传递以“http://”开头的字符串吗?
  • 您还有其他使用 RegEx 的规则来建议我吗?
  • 检测语法正确的 URL 的最佳实践是什么?

  • 谢谢你的帮助

    请您参考如下方法:

    在许多方面更简单的方法,并且对以后的更改更灵活,就是尝试一下,看看:

    public static bool IsValidHttpUri(string uriString) 
    { 
      Uri test = null; 
      return Uri.TryCreate(uriString, UriKind.Absolute, out test) && test.Scheme == "http"; 
    ) 
    

    使用 Uri.IsWellFormedUriString仍然更容易,但不会检查您对 URI 必须是 HTTP 的要求。

    编辑:哦,这是否认为 IRI 有效取决于配置,请参阅 http://msdn.microsoft.com/en-us/library/system.uri.aspx 上的“国际资源标识符支持”部分通常,无论您是否希望它们被视为有效,无论如何都会匹配此配置设置,因此在大多数情况下这实际上是一个好处。