Forum Webscript.Ru

Программирование => PHP => Тема начата: Croaker от 14 Августа 2002, 18:07:46

Название: регулярные
Отправлено: Croaker от 14 Августа 2002, 18:07:46
Народ! Регулярное выражение, которое должно проверять слово, на соответствие любому доменному имени без http://www. (aka webscript.ru)

/[A-Za-z0-9]{1,}\\.[A-Za-z]{2,4}[^A-Za-z0-9]{1,}/

что не так?
Название: регулярные
Отправлено: Ardzhan от 14 Августа 2002, 18:44:54
Лови

$url="webscript.ru";
if (preg_match("/^[A-Za-z0-9]+\\.[A-Za-z0-9]{2,4}$/i", $url)){
echo $url;}
Название: регулярные
Отправлено: Меняздесьдавнонет от 14 Августа 2002, 18:44:56
Ну, в первый набор я бы добавил точку.
А зачем после {2,4} еще что-то? или ты проверяешь целиком адрес? Но почему тогда нам не могут быть буквы?
Не лучше ли вырезать имя домена и проверять только его?
и оставить /[A-Za-z0-9.]+\\.[A-Za-z]{2,4}/
Название: регулярные
Отправлено: Ardzhan от 14 Августа 2002, 18:47:15
Перед точкой слэш поставь +\\. вместо +.
Название: регулярные
Отправлено: Croaker от 15 Августа 2002, 13:00:42
всем thanx (большой такой)
Название: регулярные
Отправлено: Меняздесьдавнонет от 15 Августа 2002, 16:02:34
вообще-то в имени домена разрешены еще как минимум, дефисы...
Так что, ты бы лучше выяснил поточнее, а потом уже пиал проверку...
Название: регулярные
Отправлено: Ardzhan от 15 Августа 2002, 16:21:02
Ну так в чем проблема? Добавляем символ подчеркивания и дефис, даже так:

$url="webscript.ru";
if (preg_match("/^[a-z0-9_-]+\\.[a-z0-9]{2,4}$/i", $url)){
    echo $url;}
заглавные и строчные можно не дублировать, так как модификатор i делает регулярку к регистру нечувствительной!
вместо +. надо +\\. - форум съедает!
Название: регулярные
Отправлено: Croaker от 18 Августа 2002, 22:36:20
/^[a-z0-9_\\-]{1,}\\.[a-z0-9]{2,4}$/i

или что-то около. Потом занак "_" вроде использовать нельзя, хотя может я и ошибаюсь. На счет знака "-" - согласен, лоханулся, но главная проблема было в знаках начала и конца выражения, за которве всем большое человеческое спасибо.