На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
    > Проверка строки по заданному шаблону
      Добрый день,

      подскажите пожалуйста как проверить строку на соответствие заданному шаблону? Есть шаблон вида: "AB1234" (сначала две буквы латинского алфавита, затем четыре цифры), нужно проверить, соответствует ли строка этому шаблону или нет.

      Что-то не могу разобраться с рег. выражением как это сделать.

      ExpandedWrap disabled
        $str = "AB1234";
         
        preg_match("/(^[a-z]{2}\d{4})+/", $str);
        Цитата iPhonesoft @
        Что-то не могу разобраться с рег. выражением как это сделать.
        Надо либо i (ignore case) - модификатор ставить, либо перечислять [a-zA-Z]
          У тебя в регулярке учитывается регистр - нижний, а в проверочном слове только верхний ;)
            ой, уже успели ответить, опоздал :(
              Цитата Zafod Biblebox @
              У тебя в регулярке учитывается регистр - нижний, а в проверочном слове только верхний ;)

              Да вот так тоже не работает к сожалению

              ExpandedWrap disabled
                    $str = "AB1234";
                    
                    preg_match("/(^[a-z]{2}\d{4})+/", strtolower($str));
                Цитата iPhonesoft @
                Да вот так тоже не работает к сожалению
                А у тебя там точно латиница?

                Добавлено
                И все таки правильнее будет так:
                ExpandedWrap disabled
                   preg_match("/([a-z]{2}\d{4})+/i", $str);


                Добавлено
                Кстати, а зачем там было ^ ?

                Добавлено
                И зачем у нас выбор подгруппы? Строка должна целиком подходить под условия или в ней должны содержаться подстроки данного вида?
                Сообщение отредактировано: fatalist -
                  Цитата fatalist @
                  Добавлено
                  И все таки правильнее будет так:
                  ExpandedWrap disabled
                     preg_match("/([a-z]{2}\d{4})+/i", $str);

                  почему-то Ваш пример у меня не сработал. Ниже проверочный код:


                  ExpandedWrap disabled
                    <?php
                     
                    $str = "ab1234";
                     
                                // Проверяем, соответствует ли строка маске вида: AB1234
                                if(!preg_match("/([a-z]{2}\d{4})+/i", strtolower($str)))
                                
                                        {
                                        // Если сторока не соответствует маске:
                                        echo "MASK ERROR";
                                        }
                                        
                                        // Если соответствует:
                                        else
                                        {
                                        echo "OK";
                                        }
                     
                    ?>
                    preg_match("/[a-z]{2}\d{4}/i")

                    Добавлено
                    Проверил в онлайн конструкторе - предыдущий вариант тоже работает... щас проверю у себя на серваке...

                    Добавлено
                    На моем серваке твой код из поста #9 тоже работает, так что "не морочьте мне голову" :D

                    Добавлено
                    Единственное, strtolower я таки убрал... хотя слабо себе представляю, чем он мог помешать...
                      Цитата fatalist @
                      На моем серваке твой код из поста #9 тоже работает, так что "не морочьте мне голову"


                      Вот это новости! Спасибо Вам за проверку кода. Видимо у меня причина неполадки связана с версией PHP? Очень странно.
                        Цитата iPhonesoft @
                        Вот это новости! Спасибо Вам за проверку кода. Видимо у меня причина неполадки связана с версией PHP? Очень странно.
                        Вряд ли... код чуть более, чем полностью универсален... хотя кто его знает... У меня если что 5.3...
                        Сообщение отредактировано: fatalist -
                          У меня PHP Version 5.4.4 ;)
                            Цитата iPhonesoft @
                            У меня PHP Version 5.4.4
                            И что, в ней pcre переделали что-ли? :blink:
                              5.5.8 x64 нормально пашет. Может модификатор u добавить?
                                ну попробуй /\w{2}\d{4}/i
                                  Нет, не знаю почему, но не хочет у меня работать. Спасибо всем большое за помощь. Буду искать ошибку у себя.
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0418 ]   [ 16 queries used ]   [ Generated: 28.03.24, 12:54 GMT ]