我使用的是Asp.net 4和C#Web Forms。
在我的Web应用程序中,用户可以使用TextBox添加URL。
我需要确保插入的每个值都具有语法正确的URL格式(我不需要检查URL是否真的存在)。
因此,作为第一条规则,如果用户插入的输入在开头有值字符串“http://”,我想使用CustomValidator Control
进行检查。
我的问题?
你是否可以向我提供一个RegEx来添加到我的CustomValidator Control中,它只允许传递以“http://”开头的字符串?
您有使用RegEx建议我的其他规则吗?
检测检测语法正确的网址的最佳做法是什么?
感谢您的帮助
答案 0 :(得分:9)
在许多方面采用更简单的方法,并且对以后的更改更加灵活,只需尝试并查看:
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上的“国际资源标识符支持”部分。通常,您是否希望它们被视为有效将匹配无论如何,这种配置设置,所以在大多数情况下这实际上是一个好处。
答案 1 :(得分:0)
Regex regx = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?", RegexOptions.IgnoreCase);
答案 2 :(得分:0)
在我的(有限的)经验中,正则表达式为这么简单的任务浪费了大量资源(字符串以http://或https://开头)
您可能需要考虑检查网址是否包含“非法”字符。 about urlencoding