подтвердить URL без www.или http: // - PullRequest
1 голос
/ 14 января 2011

Я хочу проверить URL.У меня уже есть скрипт, который не позволяет www. и http://, но мне нужно также проверить для .co.uk .com и т. Д.

Мой скрипт не запустится, если они введут что-то вроде example.co.ukff.

У меня есть это для полного URL:

^[a-zA-Z]+[:\/\/]+[A-Za-z0-9\-_]+\\.+[A-Za-z0-9\.\/%&=\?\-_]+$/i

Мне просто нужно проверить конец .co.uk или .com и т. Д.

Ответы [ 2 ]

4 голосов
/ 17 октября 2014

Попробуйте это ...

/^http:\/\/|(www\.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/

Он работает именно так, как вы хотите.

он принимает с или без http://, https://, и www.

2 голосов
/ 14 января 2011

Далеко не претендуя на то, что это идеальное регулярное выражение для сопоставления с URL-адресами, конкретная проблема только сопоставления URL-адресов, которые не начинаются с www , может быть решена с помощью негативный взгляд : (?!www\.) это означает, что следующий текст не должен быть www.

Следовательно, ваше регулярное выражение адаптировано с этим негативным взглядом:

^(?!www\.)[A-Za-z0-9_-]+\.+[A-Za-z0-9.\/%&=\?_:;-]+$

соответствует следующим URL

google.com
google.com/
goggle.com/q
google.com/q?q=1&h=en
google.co.uk
google.co.uk/
goggle.co.uk/q
google.co.uk/q?q=1&h=en
w.google.com
w.google.com/
w.goggle.com/q
w.google.com/q?q=1&h=en
209.85.149.105
209.85.149.105/
209.85.149.105/q
209.85.149.105/q?q=1&h=en
209.85.149.105:80
209.85.149.105:80/
209.85.149.105:80/q
209.85.149.105:80/q?q=1&h=en
example.domain.bogus.number.of.subdomains/index.htm

но не те:

www.google.com
www.google.com/
www.google.co.uk
www.google.co.uk/
www.google.co.uk/q
www.google.co.uk/q?q=1&h=en
http://209.85.149.105/
http://209.85.149.105:80/
http://www.google.com
https://www.google.com
http://google.com
https://google.com
...