Как проверить URL для .рф?

Статус
В этой теме нельзя размещать новые ответы.

iskif

Профессор
Регистрация
21 Авг 2006
Сообщения
373
Реакции
49
Добрый день
с регулярными выражениями дела раньше не имел, но вопрос кажется из этого раздела :)

В скрипте-каталоге при заполнении информации об организации есть поле "сайт". И разработчиками уже поставлена проверка на правильность заполнения (которую можно изменить)
Код:
^[a-z0-9_-]+\.+[a-z0-9_-]

Но эта конструкция, естественно, считает все домены на кириллице не допустимыми :(
как исправить это "недоразумение"?
 
Код:
^[a-zа-я0-9_-]+\.+[a-zа-я0-9_-]
 
Зачем делать [a-zа-я0-9_-] если есть \w\d ?
 
Зачем делать [a-zа-я0-9_-] если есть \w\d ?
пример можно? что вставить в поле
Regex pattern for input validation:

^[\w\d]+\.+[\w\d]
^\w\d+\.+\w\d
не помогло

сейчас там ^[a-zа-я0-9_-]+\.+[a-zа-я0-9_-]
но это работает только если вводить url с www
Скрытое содержимое доступно для зарегистрированных пользователей!

сейчас столкнулся при добавлении, хотя, когда сразу проверял, вроде работало и так и так :nezn:
 
пример можно? что вставить в поле
Regex pattern for input validation:
^[\w\d]+\.+[\w\d]
^\w\d+\.+\w\d
не помогло
сейчас там ^[a-zа-я0-9_-]+\.+[a-zа-я0-9_-]
но это работает только если вводить url с www
*** скрытое содержание ***
сейчас столкнулся при добавлении, хотя, когда сразу проверял, вроде работало и так и так :nezn:
PHP:
 '/^([a-zа-я0-9]+(-[a-zа-я0-9]+)*\.)+[a-zа-я]{2,}/'
 
PHP:
 '/^([a-zа-я0-9]+(-[a-zа-я0-9]+)*\.)+[a-zа-я]{2,}/'

нет, теперь хоть с www, хоть без и на латинице если, то всегда получаю ошибку
"Введите правильное значение для Сайт"

если убрать в начале и в конце '/ то на латинице принимает нормально, с www и без
на кириллице не хочет

первоначальная конструкция ^[a-zа-я0-9_-]+\.+[a-zа-я0-9_-] принимает домены на латинице тоже и с www и без
 
нет, теперь хоть с www, хоть без и на латинице если, то всегда получаю ошибку
"Введите правильное значение для Сайт"
регулярка правельная может тогда выложи кусок кода куда вставляешь? и как?
судя по тому что вы раньше писали вам надо вставлять только это ^([a-zа-я0-9]+(-[a-zа-я0-9]+)*\.)+[a-zа-я]{2,}
 
регулярка правельная может тогда выложи кусок кода куда вставляешь? и как?
судя по тому что вы раньше писали вам надо вставлять только это ^([a-zа-я0-9]+(-[a-zа-я0-9]+)*\.)+[a-zа-я]{2,}

так тоже пробовал, добавил предыдущее сообщение.
а с куском кода сложнее, говорю ж - готовый скрипт каталога организаций, при заполнении в нём есть поле "Сайт" и где он там потом проверяется не знаю.
попробую сейчас поискать

вот что нашёл
в файле шаблона, где админ может изменить это выражение
Код:
case 'website':
                ?>
                <table class="admin_list">
                    <tr>
                        <td>
                            <strong>Regex pattern for input validation:</strong>
                            <br /><input id="params[valid_regex]" name="data[Field][params][valid_regex]" type="text" size="150" value="<?php $this->regex()?>" />
                        </td>
.
.
.
единственное упоминание о valid_regex в других файлах такое:
Код:
                    if(!isset($field['Field']['_params']['valid_regex'])) {

                        switch($field['Field']['type']) {
                           ... 
                            case 'website':
                                $regex = "^(ftp|http|https)+(:\/\/)+[a-z0-9_-]+\.+[a-z0-9_-]";
                                break;
                            case 'email':
                                $regex = ".+@.*";
                                break;
                            default:
                                $regex = '';
                                break;
                        }
но тут прописано жёстко, как и было изначально
значение, которое задаю я (а оно действительно по разному работает), берётся из БД похоже, но где и каким образом ...

я вот не пойму, почему при конструкции ^[a-zа-я0-9_-]+\.+[a-zа-я0-9_-] сайты на латинице можно вводить и с www и без, а на кириллице только с www или ввв, ну из трёх частей чтоб состояло обязательно???
 
вот так нижний код попробуй сделать
PHP:
if(!isset($field['Field']['_params']['valid_regex'])) {
                        switch($field['Field']['type']) {
                           ... 
                            case 'website':
                                $regex = "^(ftp|http|https)+(:\/\/)+([a-zа-я0-9]+(-[a-zа-я0-9]+)*\.)+[a-zа-я]{2,}";
                                break;
                            case 'email':
                                $regex = ".+@.*";
                                break;
                            default:
                                $regex = '';
                                break;
                        }
а это выражение вообще в корне не правильно ^[a-zа-я0-9_-]+\.+[a-zа-я0-9_-] где вы видели нижнее подчеркивание в урле? это для емайл подойдет
 
вот так нижний код попробуй сделать а это выражение вообще в корне не правильно ^[a-zа-я0-9_-]+\.+[a-zа-я0-9_-] где вы видели нижнее подчеркивание в урле? это для емайл подойдет

пробовал, не помогло
я вобще не пойму смысла этого кода - то выражение, которое я задаю в админке, в этот файл не прописывается, но работает, т.е. хранится или в БД или в каком то другом файле. Разве что осталось с каких-то первых версий, когда изменение не было вынесено в админку.

попробую спросить у разработчика, если получится с моим вариантом лицензии :-]
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху