За последние 24 часа нас посетили 16294 программиста и 1581 робот. Сейчас ищут 1588 программистов ...

Регулярка

Тема в разделе "Регулярные выражения", создана пользователем 715kg, 4 дек 2014.

  1. 715kg

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

    С нами с:
    2 мар 2013
    Сообщения:
    147
    Симпатии:
    0
    Здравствуйте. Сколько не читал, не как не могу понять регулярные выражения для preg_match
    Задача такая. Разрешить Английский и русский алфавит A-Z a-z А-Я а-я и длина от 3х до 20 символов {3,20}
    Кодировка у меня UTF-8.

    Делал так, но что то не работает. Можно ведь проще сделать. Подскажите пожалуйста
    Код (Text):
    1. # проверям Имя
    2. if(!preg_match("/[^a-z A-Z0-9а-яА-Я]/u",post('name')))
    3. {
    4. $error[] = "Имя содержит не допустимые символы.";
    5. }
    6.  
    7. # проверям Фамилии
    8. if(!preg_match("/[^a-z A-Z0-9а-яА-Я]/u",post('last-name')))
    9. {
    10. $error[] = "Фамилия содержит не допустимые символы.";
    11. }
    12.  
    13. # проверям Имя
    14. if(!preg_match("/^.{3,20}$/",post('name')))
    15. {
    16. $error[] = "Имя от 3 до 20 символов";
    17. }
    18.  
    19. # проверям Фамилию
    20. if(!preg_match("/^.{3,20}$/",post('last-name')))
    21. {
    22. $error[] = "Фамилия от 3 до 20 символов";
    23. }
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    /[a-zа-яё]{3,20}/ui
     
  3. 715kg

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

    С нами с:
    2 мар 2013
    Сообщения:
    147
    Симпатии:
    0
    Такое выражение пропускаю всю фигню, если в строчке есть хотя бы одна русская или английская буква.

    Например <><>ааа Он пропускает. <''''''''>>>>!!!$ ZZZZ Он пропускает
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    о боги... одни и те же грабли. ну как логика написана так регулярка и пропускает. инверсия от поиска допустимого НЕ РАВНО ЛОГИЧЕСКИ поиску недопустимого. искать надо недопустимое. понимаете?
     
  5. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    /^[a-zа-яё]{3,20}$/ui
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    runcore, пропустит бяку всякую.
     
  7. 715kg

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

    С нами с:
    2 мар 2013
    Сообщения:
    147
    Симпатии:
    0
    Так дай пожалуйста решение.
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    так поищи. я за пару последних недель не один раз вижу вот эту шнягу и помогаю ее исправить. хорошо бы вы заткнули ту дыру в которой вы берете этот говнокод, но я понимаю что откроется другой источник искаженных знаний.
     
  9. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ты о чем?
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да похоже погорячился. сорри.
     
  11. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А тему про регулярки никак нельзя сразу создать в разделе регулярок, да? :)