За последние 24 часа нас посетили 17895 программистов и 1286 роботов. Сейчас ищут 1416 программистов ...

Проверка данных

Тема в разделе "Регулярные выражения", создана пользователем xak2, 27 апр 2007.

  1. xak2

    xak2 Guest

    Проверочная строка:
    PHP:
    1. <?php
    2. if(!eregi("[a-zA-Z0-9]{4,10}", $_POST['login'])) $error .= ERROR_2;
    3. ?>
    Если я введку: xak2', он не выведет ошибку, почему?
     
  2. xak2

    xak2 Guest

    А если еще вывести в MSSQL:
    Код (Text):
    1. Warning: mssql_query() [function.mssql-query]: message: Unclosed quotation mark before the character string 'xak2\''. (severity 15) in C:\AppServ\www\reguser.php on line 6
     
  3. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    потому что строка соответствует регулярному выражению.

    PHP:
    1. preg_match('~^[a-z0-9]{4,10}$~i', $_POST['login']);
     
  4. xak2

    xak2 Guest

    Почему соответствует она длинее 4 и короче 10 как и надо но содержит символ '. В регулярке указаны только a-zA-Z0-9 при этом ошибка не выводится!
     
  5. simpson

    simpson Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    xak2
    твое регулярное выражение соответствует любой строке, в которой есть от 4 до 10 символов [a-zA-Z0-9] подряд.
     
  6. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    xak2

    ты ищешь в строке подстроку.
    чтобы проверять соответствие строки шаблону, нужно сделать так, как написал simpson.

    смысл ^ в самом начале - она говорит, что речь идет о начале строки, $ - о том, что это конец строки.

    т.е. рразница в том, что твоя регулярка говорит, что строка должна содержать фрагмент длиной 4-10 символов, маленькие и большие латинские буквы, а регулярка simpson'а говорит, что строка должна состоять из этих символов и быть длиной 4-10 символов.