Simone
Simone

Reputation: 656

Issue with regex for website validation in JavaScript

I am currently using the following regex to validate a website:

^((https?):\/\/)?([w|W]{3}\.)[a-zA-Z0-9\-\.]{3,}\.[a-zA-Z]{2,}(\.[a-zA-Z]{2,})?$

This is currently working for:

http://www.google.com
www.google.com

but not for

google.com
http://google.com

Please help.

Upvotes: 0

Views: 77

Answers (1)

Wiktor Stribiżew
Wiktor Stribiżew

Reputation: 627083

You need to make thr group matching www. optional

^((https?):\/\/)?([wW]{3}\.)?[a-zA-Z0-9\-.]{3,}\.[a-zA-Z]{2,}(\.[a-zA-Z]{2,})?$
                            ^

See demo

I am just pointing how to adjust your regex to match the strings you specified. Actually, the topic has been thoroughly covered on SO. For example, please check Trying to Validate URL Using JavaScript post to see how URL can be validated in JavaScript.

Also, a bit of searching over the Web can show some other solutions, like in URL Validation using Regular Expression in Javascript:

^(?:(?:https?|ftp):\/\/)?(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$

It is a bit adjusted, see how it works here.

Upvotes: 2

Related Questions