Только RU или только ENG

Тема в разделе "Регулярные выражения", создана пользователем B0nuse, 5 дек 2010.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. B0nuse

    B0nuse Постоялец

    Регистр.:
    6 июн 2009
    Сообщения:
    105
    Симпатии:
    21
    Здравствуйте!
    Есть задача написать регулярку, которая позволяла бы использовать только русские или только английские символы в переменной, цифры, а также дополнительно символы тире, равно, скобки (фигурные, круглые, квадратные), точку, | и @.
    Варианты могут быть любые, главное, чтобы были либо только латиница, либо только русские.
    Регулярка должна быть одна.

    Дано:
    PHP:
    $pattern=""#пишем регулярку
    $str[]="Ba-c-ek"#только английские
    $str[]="=Ва{с}ек="#только русские
    $str[]="[Bac]ек"#смешано
    #проверяем
    foreach ($str as $v) {
    if (
    preg_match($pattern$v)) echo $v." <=Чисто<br />";
    else echo 
    $v." <=Смешано<br />";
    }
    Прошу помощи, если это возможно.

    Добавлено через 4 минуты
    Читал тему
    http://autoit-script.ru/index.php?topic=2364.0
    но под себя не смог написать одной регуляркой
     
  2. motzmo

    motzmo Создатель

    Регистр.:
    20 июн 2007
    Сообщения:
    43
    Симпатии:
    16
    PHP:
    $pattern "/^([\}\{\(\)\=\[\]\-\@\.\|a-zA-Z]+|[\}\{\(\)\=\[\]\-\@\.\|аАбБвВгГдДеЕёЁжЖзЗиИйЙкКлЛмМнНоОпПрРсСтТуУфФхХцЦчЧшШщЩъЪыЫьЬэЭюЮяЯ]+)$/";
     
    B0nuse нравится это.
  3. B0nuse

    B0nuse Постоялец

    Регистр.:
    6 июн 2009
    Сообщения:
    105
    Симпатии:
    21
    Спасибо.
    НО выдаст "Смешано", если будут только цифры.
    PHP:
    $str[]="11";
     
  4. Phrack

    Phrack

    Регистр.:
    3 ноя 2010
    Сообщения:
    264
    Симпатии:
    38
    ру
    PHP:
    /[А-Я0-9-={}()\[\].|@].+/
    англ
    PHP:
    /[A-Z0-9-={}()\[\].|@].+/
    все вместе
    PHP:
    /[A--Я0-9-={}()\[\].|@].+/
     
  5. B0nuse

    B0nuse Постоялец

    Регистр.:
    6 июн 2009
    Сообщения:
    105
    Симпатии:
    21
    Вы задачу читали?
    Вобщем, сам додумал:
    PHP:
    $pattern="/^([-=_a-zA-Z0-9\{\}\(\)\|\@\[\]\.]+|[-=_а-яА-Я0-9\{\}\(\)\|\@\[\]\.]+)$/ui";
    Спасибо motzmo
     
  6. potuga

    potuga

    Регистр.:
    22 сен 2009
    Сообщения:
    376
    Симпатии:
    91
    что-то вы такие замудренные регулярки пишите... Все же куда проще...

    PHP:
    $pattern "~^(?:[^а-я]*|[^a-z]*)$~i";
     
  7. nullsab

    nullsab Постоялец

    Регистр.:
    5 июн 2007
    Сообщения:
    65
    Симпатии:
    10
    Для utf8 не забываем символы ёЁ дописывать
     
  8. potuga

    potuga

    Регистр.:
    22 сен 2009
    Сообщения:
    376
    Симпатии:
    91
Статус темы:
Закрыта.