2013-09-09 2 views
0

Я пытаюсь найти простое регулярное выражение для проверки URL-адреса, но не очень хорошо в regexing ..Regexp Javascript - гиперссылка матч с локальным хостом

В настоящее время у меня есть такое регулярное выражение: (/^https?:\/\/\w/).test(url)

Так что это, позволяющие проверки URLs как http://localhost:8080 и т.д.

То, что я хочу сделать, это НЕ для проверки URL-адресов, если у них есть какие-то длинные специальные символы в конце, как: http://dodo....... или http://dododo&&&&&

Не могли бы вы мне помочь?

+0

возможный дубликат [Что такое лучший регулярное выражение для проверки, если строка является допустимым URL?] (http://stackoverflow.com/questions/161738/what-is-the-best-r egular-expression-to-check-if-a-string-is-a-valid-url) – Kosmetika

ответ

3

Как насчет этого?

/^http:\/\/\w+(\.\w+)*(:[0-9]+)?\/?(\/[.\w]*)*$/ 

будет соответствовать: http://domain.com:port/path или просто http://domain или http://domain:port

/^http:\/\/\w+(\.\w+)*(:[0-9]+)?\/?$/ 

матч URL-адресов без пути

 

Некоторые объяснения регулярных выражений блоков:

Домен:\w+(\.\w+)* для сопоставления текста с точками: localhost или www.yahoo.com (может быть до тех пор, как Путь или порт начинает секции)

Порт:(:[0-9]+)?, чтобы соответствовать или не соответствовать номеру, начиная с точкой с запятой: :8000 (и это может быть только один)

Путь:\/?(\/[.\w]*)*, чтобы соответствовать любым alphanums с косой чертой и точками: /user/images/0001.jpg (до конца строки)

(путь очень интересная часть, теперь я сделал это, чтобы позволить одиночек или соседние точки, т.е. такие выражения могут быть возможны: /. или /./ или /.../ и т.д. Если вы хотите, чтобы иметь точки в пути как в домен раздел - без граничных или смежных точек, затем используйте \/?(\/\w+(.\w+)*)* regexp, аналогично домен часть.)

* ОБНОВЛЕНО *

Кроме того, если вы хотели бы иметь (действительно) - символы в вашем URL (или любой другой), вам следует просто расширить символьный класс для «URL текста соответствие ", то есть \w+ должно стать [\-\w]+ и так далее.

+0

ваше регулярное выражение прекрасно, но оно по-прежнему позволяет '' http: // ..... '', к сожалению, – Kosmetika

1

Это зависит от того, насколько сложным вам будет регулярное выражение. Простой способ будет просто принять слова (и порт/домен):

^https?:\/\/\w+(:[0-9]*)?(\.\w+)?$ 

Помните, что вы должны использовать + характер, чтобы соответствовать один или более символов.

Конечно, есть better & more complicated solutions.

1

Если вы хотите, чтобы соответствовать ABCD, то вы можете оставить начальную часть ..

Для примера, чтобы соответствовать http://localhost:8080

'просто написать

/(localhost). 

, если вы хотите, чтобы соответствовать конкретной вещи, то пожалуйста, сосредоточьте термин, который вы хотите искать, а не начало и конец предложения.

Регулярное выражение предназначено для поиска терминов, пока у нас не будет жесткого правила для него. :)

я надеюсь, что это будет делать ..

+0

, который будет соответствовать " http://localhost.devilsite.com " – ksiomelo

+0

Да! Я считаю, что удовлетворенное требование того времени, если что-то еще дайте мне знать – MarmiK