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

Статус
В этой теме нельзя размещать новые ответы.

B0nuse

Постоялец
Регистрация
6 Июн 2009
Сообщения
106
Реакции
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 минуты
Читал тему

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

PHP:
$pattern = "~^(?:[^а-я]*|[^a-z]*)$~i";
 
Для utf8 не забываем символы ёЁ дописывать
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху