|
|
Validating A URL With Regular Expressions
By Mads Kristensen
Expert Author
Article Date: 2006-10-25
I had to build web form that took user input from standard ASP.NET input controls. In one of the text boxes the user must enter a valid URL, so I had to make some validation logic.
But first of all, I had to find out what kind of URL's we would accept as being valid. These are the rules we decided upon:
The protocol must be http or https
Sub domains are allowed
Query strings are allowed
Based on those rules, I wrote this regular expression:
(http|https)://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
It is used in a RegularExpressionValidator control on the web form and on a business object in C#.
<asp:RegularExpressionValidator runat="Server"
ControlToValidate="txtUrl"
ValidationExpression="(http|https)://([w-]+.)+[w-]+(/[w- ./?%&=]*)?"
ErrorMessage="Please enter a valid URL"
Display="Dynamic" />
Here is the server-side validator method used by the business object:
using System.Text.RegularExpressions;
private bool IsUrlValid(string url)
{
return Regex.IsMatch(url, @"(http|https)://([w-]+.)+[w-]+(/[w- ./?%&=]*)?");
}
You can add more protocols to the expression easily. Just add them to the beginning of the regular expression:
(http|https|ftp|mailto)://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
You can also allow every thinkable protocol containing at least 3 characters by doing this:
([a-zA-Z]{3,})://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
Comments
Tag: URL validation
Add to Del.icio.us | Digg | Yahoo! My Web | Furl
Bookmark WebProNews:
About the Author: Mads Kristensen currently works as a Senior Developer at Traceworks located
in Copenhagen, Denmark. Mads graduated from Copenhagen Technical Academy with a multimedia degree in
2003, but has been a professional developer since 2000. His main focus is on ASP.NET but is responsible for Winforms, Windows- and
web services in his daily work as well. A true .NET developer with great passion for the simple solution.
http://www.madskristensen.dk/
|
|