Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Регулярка... проверка строки на содержание определённых символов
 
 автор: ProtoTeeP   (31.10.2007 в 11:26)   письмо автору
 
 

Мне надо условие.
Чтоб строка могла содержать
1) цифры, знаки "+" "-" "@" "_" "=" "!" "$" "*"
2) минимум 3 буквы, кроме знаков например, "a@a@a"
3) должна содержать или кириллицу, или латинские буквы, но не вместе....

   
 
 автор: SHAman   (31.10.2007 в 11:50)   письмо автору
 
   для: ProtoTeeP   (31.10.2007 в 11:26)
 

Интересная задачка. 100% не решается в одну регулярку (а если решается, то будет работать мееееееедленно). Я, пожалуй, подумаю над ней на досуге. А если не секрет, что это за странная строка?

   
 
 автор: ProtoTeeP   (31.10.2007 в 12:36)   письмо автору
 
   для: SHAman   (31.10.2007 в 11:50)
 

>Интересная задачка. 100% не решается в одну регулярку (а если решается, то будет работать мееееееедленно). Я, пожалуй, подумаю над ней на досуге. А если не секрет, что это за странная строка?

Спасибо....

да, мне нужно в разные условия поставить... т.е. чтоб можно было потом показать в чем ошибка.

это для проверки логина, при регистрации.

   
 
 автор: kasmanaft   (31.10.2007 в 15:57)   письмо автору
 
   для: ProtoTeeP   (31.10.2007 в 11:26)
 

<?php
$text 
'str';
if (
preg_match("#^(?=[^a-z]+$|[^а-яё]+$)(?=[0-9a-zа-яё+@_=!$*-]+$)([^a-zа-яё]*[a-zа-яё]){3,}#i"$text))
    echo 
"да";
else echo 
"нет";
?>

На счет "мееееееедленно" - не знаю :)

   
 
 автор: ProtoTeeP   (31.10.2007 в 19:57)   письмо автору
 
   для: kasmanaft   (31.10.2007 в 15:57)
 

чета не работает...

Даже не пропускает обычные слова, не то что с какими то знаками.

и еще можно разделить?
т.е. сделать несколько условий (проверок)

проверка 1:
не используются ли одновременно кириллица и латиница?

проверка 2:
обычных букв(кириллица или латинские) больше 3?

проверка 3:
содержит ли строка левые символы?
(левые сиволы - все кроме латинских букв, кирилилцы и символов: "!", "$", "@", "(",")","<",">" )

   
 
 автор: EXP   (31.10.2007 в 20:20)   письмо автору
 
   для: ProtoTeeP   (31.10.2007 в 19:57)
 

можно так попробовать

"#^[a-z\!\$\@\(\)\<\>]{3,25}|[а-яё\!\$\@\(\)\<\>]{3,25}$#i"
но наверное надо ещё добавлять хотя-бы - и _ и можно ' вдруг будет Д'артаньян :)

   
 
 автор: ProtoTeeP   (31.10.2007 в 20:27)   письмо автору
 
   для: EXP   (31.10.2007 в 20:20)
 

нет, не работает...
просто 'фффф' - не пропускает

   
 
 автор: kasmanaft   (31.10.2007 в 20:32)   письмо автору
 
   для: ProtoTeeP   (31.10.2007 в 19:57)
 

Если бы не работало, я бы, наверное, не стал код показывать...

Как Вы это применяете?

   
 
 автор: ProtoTeeP   (31.10.2007 в 20:17)   письмо автору
 
   для: kasmanaft   (31.10.2007 в 15:57)
 

- - -

   
 
 автор: EXP   (31.10.2007 в 20:34)   письмо автору
 
   для: ProtoTeeP   (31.10.2007 в 20:17)
 

кодировка не утф8 случайно ? там с русскими буквами вообще может так не получиться

   
 
 автор: ProtoTeeP   (31.10.2007 в 20:49)   письмо автору
 
   для: EXP   (31.10.2007 в 20:34)
 

=) UTF-8

я как то даже об этом не подумал..... и что? теперь использовать iconv перед проверкой? =)

   
 
 автор: EXP   (31.10.2007 в 21:03)   письмо автору
 
   для: ProtoTeeP   (31.10.2007 в 20:49)
 

вообще-то говорят должен помогать модификатор "u" ,
но мне не помогло

если есть поддержка mbstring-функций , там нет preg но есть ereg
например такая просто проверка делается функцией mb_eregi( string pattern, string string [, array regs] ) например.

только бывает нужно перед этим выставить установки для mbstring,
если просто не работает тогда :
var_dump(mb_list_encodings()) ; - просто список поддерживаемого

var_dump(mb_regex_encoding()) ; кодировка по умолчанию или устанавливать её

var_dump(mb_regex_set_options()) ; установленные модификаторы или их установка

   
 
 автор: ProtoTeeP   (31.10.2007 в 21:14)   письмо автору
 
   для: EXP   (31.10.2007 в 21:03)
 

=) я лучше переконвектирую на время и все.. =)

   
 
 автор: EXP   (31.10.2007 в 21:26)   письмо автору
 
   для: EXP   (31.10.2007 в 21:03)
 

попробуй выражение kasmanaft'a так
<?
if (mb_eregi("^(?=[^a-z]+$|[^а-яё]+$)(?=[0-9a-zа-яё+@_=!$*-]+$)([^a-zа-яё]*[a-zа-яё]){3,}$"$msg)) 
echo 
'ok'

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования