За последние 24 часа нас посетили 17555 программистов и 1314 роботов. Сейчас ищут 1435 программистов ...

Не более 2-х пробелов

Тема в разделе "Регулярные выражения", создана пользователем Angel_verbena, 18 июл 2015.

  1. Angel_verbena

    Angel_verbena Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    21
    Симпатии:
    0
    Доброго времени суток всем!
    Помогите пожалуйста решить пару вопросов по выражениям.
    1. Как при регистрации сделать не более 2-х пробелов в логине (не подряд а в разнобой).
    2. Как вырезать все цифры и символы кроме русских и латинских букв?
    Буду весьма благодарен за помощь.
     
  2. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    1)
    Код (PHP):
    1. if (preg_match('/^\S*\s?\S*\s?\S*$/', $login)) {
    2.     // Если в логине не более двух пробелов, проверка пройдена
    3. }
    4.  
    Возможные пробелы в начале и конце строки не учтены, так как они бессмысленны. Я так понимаю, нужно для ФИО, два пробела между тремя словами?

    2) Пропустите строку через это:
    Код (PHP):
    1. $string = preg_replace('/[^a-zа-я]/i', '', $string); 
    Но лучше посоветуйтесь с профессионалами. Я не профи, могу чего-то не учесть. На вид работает вроде ))
     
  3. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Пхп довольно интересный язык с полезными функциями, но создавали язык как попало:(
    С первым пунктом можно справиться проще, без регулярок
    Код (PHP):
    1. echo substr_count('fgdg gdfg fdgd', ' ');
    1) Буква ё не входит в интервал а-я. Букву ё надо отдельно указывать.
    2) Русские буквы это все таки не ascii поэтому модификатор \u не помешал бы
     
  4. Catrina

    Catrina Новичок

    С нами с:
    24 апр 2015
    Сообщения:
    321
    Симпатии:
    0
    Smitt, спасибо, узнала новое!
    С substr_count оригинальное решение!
     
  5. Angel_verbena

    Angel_verbena Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    21
    Симпатии:
    0
    работает только с маленькой доработкой..
    ===
    if (!preg_match('/^\S*\s?\S*\s?\S*$/', $login)) {
    // Если в логине не более двух пробелов, проверка пройдена
    }

    ===

    Добавлено спустя 51 секунду:
    Catrina, спасибо!)