@AhmedElassuty Remove the $ at the end of the line.
And for the [a-zA-Z0-9] part, some urls may contain '-', this case will not match the regex.
For the domain name part, some domain names are not handled like .io .net .uk etc... 
So it is better not to check on the url at all, if you want to validate the entered url you can request it and check the returned header if it contains 404 then this url is not valid, but I think it will be hard to do it this way.