Пытаюсь получить базовый URL с помощью reg ex

#php #regex #pattern-matching

#php #регулярное выражение #сопоставление с шаблоном

Вопрос:

Мне нужно сопоставить «базовый» URL, я имею в виду:

 Not match --> http://google.com
Not match --> http://www.google.com
Not match --> www.google.com
Match! --> google.com
  

Я пытался использовать отрицательный просмотр, чтобы убедиться, что нет http: // или www, но, похоже, это работает некорректно.

Комментарии:

1. Это обязательно должно быть в одном регулярном выражении? Какое регулярное выражение вы пробовали?

2. Возможно, вы захотите взглянуть на parse_url . Решение regex для этого может стать очень запутанным.

3. google.com поскольку URL означает нечто совершенно иное, чем http://google.com . «базовый домен» может быть лучшим термином, чем совершенно неправильный «базовый URL».

Ответ №1:

Это должно быть только с одним регулярным выражением?

У вас может быть первое регулярное выражение, которое будет соответствовать всем найденным URL. Что-то вроде этого:

 b. ?.w{2,4}b
  

А затем отфильтруйте все совпадения и сохраните те, которые не соответствуют следующему:

 ^(http://|www)
  

хотя, честно говоря, я бы не стал использовать Regex, если только это не является строго необходимым для этого.

Примечание:
Вы всегда можете найти лучшее регулярное выражение для соответствия URL. Дело в том, что они могут начинаться не с http:// или www , поэтому мы не можем так сильно ограничивать регулярное выражение. Будьте готовы к другим совпадениям, которые вообще не являются URL, например:

yesterday.but в I was there yesterday.but no one saw me

Комментарии:

1. Согласен, я уже думал о том, что они не начинаются с http: // или www, и думал, что что-нибудь придумаю, но вы правы. Поскольку это простое «поле ввода URL», я предполагаю, что каждый URL должен быть reg ex, а не просматриваться вручную. Спасибо

2. Если это будет текстовое поле только для URL, вы можете выполнить некоторые другие проверки (посмотреть, содержат ли пробелы и т.д.) И заменить b на ^ и $ . Вы можете прочитать рекомендации, какие символы принимаются в URL-адресах.