Reputation: 15257
I want to validate urls. It should accept:
http://google.com
http://www.google.com
www.google.com
google.com
I refer Regex to match URL .
But it is not supporting google.com
.
Upvotes: 5
Views: 15550
Reputation: 912
This simple helper method uses Regex to validate URLs and will pass on each of your test cases. It also takes into account for whitespace so google.com/a white space/ will fail.
public static bool ValidateUrl(string value, bool required, int minLength, int maxLength)
{
value = value.Trim();
if (required == false && value == "") return true;
if (required && value == "") return false;
Regex pattern = new Regex(@"^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$");
Match match = pattern.Match(value);
if (match.Success == false) return false;
return true;
}
Upvotes: 0
Reputation: 346
This is a better way I think should be used to validate urls
reg = /https?:\/\/w{0,3}\w*?\.(\w*?\.)?\w{2,3}\S*|www\.(\w*?\.)?\w*?\.\w{2,3}\S*|(\w*?\.)?\w*?\.\w{2,3}[\/\?]\S*/
reg.test('www.google.com') # will return true
reg.test('www.google') # will return false
Let me know if you still not getting it correct.
Upvotes: 0
Reputation: 24198
function isUrl(s) {
var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
return regexp.test(s);
}
Upvotes: 0
Reputation: 29965
Simply prepend http://
if it's not there and then test.
if (inputURL.substring(0,7) != 'http://' && inputURL.substring(0,8) != 'https://') {
inputURL = 'http://' + inputURL;
}
No large libraries required or anything, just a few lines of code.
Upvotes: 3