Регулярные выражения

Aidar

Guest
Регулярные выражения

Как при помощи регулярных выражений сделать так, чтобы можно было вводить только Буквы русского алфавита (Большие и строчные), знак запятой, знак минус и скобки ( )?

Пробовал так:

^[а-яА-Я ,-\(\)]{9,255}$

Но цифры все равно проходят...
 

Фанат

oncle terrible
Команда форума
знак дефиса имеет специальное значение в шаблонах. Да ты и сам его применяешь. а потом удивляешься, почему диапазон ,-( у тебя пропускает что-то.
дефис надо писать либо в конце набора, либо слешить
 

Aidar

Guest
Как заменить в тексте тэги <br /> на символы \n, а остальные html тэги вырезать?
 

Aidar

Guest
А как при помощи регулярных выражений?
 

Aidar

Guest
/^[а-яА-Я,\s\-\(\)]{9,255}$/

В теории это выражение должно пропускать буквы русского алфавита, пробелы, запятые, и (). На практике ни пробелы, ни мкобки не проходят =(. В чем дело?
 

specialist

Guest
Aidar
у меня всё в порядке ...
PHP:
<?
$string='абвгдеуцыпрлг ()-';
echo preg_match('/^[а-яА-Я,\s\-\(\)]{9,255}$/i',$string);
?>
 

Aidar

Guest
Твой пример и у меня работает. А у меня вот здесь не работает, срабатывает ошибка:
PHP:
if( !ereg( '/^[а-яА-Я,\s\-\(\)]{9,255}$/i', $_POST['specname'] ) ) { $Errors[] = 'Вы использовали недопустимые символы или ввели слишком короткое название.'; }
Проверил при помощи
PHP:
phpinfo(32)
- поле не содержит лишних символов.
 

Фанат

oncle terrible
Команда форума
как интересно.
а как при помощи phpinfo(32) проверяют лишние пробелы? =)
 

Aidar

Guest
А данная конструкция пропустит только один пробел? Мне казалось, что все.

-~{}~ 25.04.05 12:40:

Например строчку "Автоматизация технологических процессов и производств" она не прпускает.

-~{}~ 25.04.05 12:59:

Поменял
PHP:
!ereg( '/^[а-яА-Я,\s\-\(\)]{9,255}$/i', $_POST['specname'] )
на:
PHP:
preg_match( "/^[а-яА-Я,\s\-\(\)]{9,255}$/i", $_POST['specname'] ) == 0
И заработало!
А в чем до этого проблема была, я так и не понял.
 

SelenIT

IT-лунатик :)
разве POSIX-регулярки вообще понимают ограничители и модификаторы?
 

Aidar

Guest
В конце оставил такой вариант:
PHP:
preg_match('/[а-я,\s\-\(\)]{9,255}$/i',$string);
 
Сверху