[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ошибка регулярки
Guest
if (!preg_match("/[а-zA-Z\-\_]/", $x))
{}
Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset
где ошибься, не вижу что-то, помогите



Спустя 1 минута, 31 секунда (8.06.2010 - 14:00) Basili4 написал(а):
а безслешей /

Спустя 4 минуты, 8 секунд (8.06.2010 - 14:04) Guest написал(а):
Basili4
без слэшей ошибку не выдал, но не выполняет, то что должен. что бы не было в $x условие выполняется.

насколько я знаю, preg должен быть со слешами всегда?

Спустя 1 минута, 57 секунд (8.06.2010 - 14:06) ApuktaChehov написал(а):
Попробуйте так:
Если слеш не нужен
if (!preg_match("/[-а-z_]/i", $x))

Если нужен:
if (!preg_match("/[-а-z_\\]/i", $x))


i - говорит, что не нужно учитывать регистр.

Спустя 2 минуты, 45 секунд (8.06.2010 - 14:09) Guest написал(а):
ApuktaChehov
оба варианта выдают
Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset
можешь сам проверить)

до этого написал для проверки почты
if (!preg_match("/^[a-zA-Z0-9\_\-]+@[a-zA-Z0-9]+\.[a-zA-Z]{1,6}$/", $email))
{}
этот код работает, хотя в чем разница не понимаю

Спустя 46 секунд (8.06.2010 - 14:10) ApuktaChehov написал(а):
Че то я затупил:
if (!preg_match('/[-а-z_]+/i', $x))

Спустя 4 минуты, 25 секунд (8.06.2010 - 14:14) Guest написал(а):
ApuktaChehov
что-то ближе к истине, но почему-то $x=alex* он пропустил, хотя звездочки нету в проверке

Спустя 2 минуты, 15 секунд (8.06.2010 - 14:17) tomash написал(а):
/^[а-zA-Z\-\_]$/

Спустя 3 минуты, 29 секунд (8.06.2010 - 14:20) ApuktaChehov написал(а):
if (preg_match("/[^-а-z_]+/i", $x))

Вот так работает. Если найдет что то кроме разрешенного вернет труе, иначе фалсе.
И не надо экранировать нижнее подчеркивание. Это не спецсимвол.

А что бы не экранировать тере, нужно его поставить в начало символьного класса.

Спустя 1 минута, 21 секунда (8.06.2010 - 14:21) Guest написал(а):
tomash
а с таким написанием условие всегда истинно, даже если все написать правильно
$x=alex не пропускает

Спустя 3 минуты, 26 секунд (8.06.2010 - 14:25) ApuktaChehov написал(а):
Я сново плюсик съел, поправил уже.

Спустя (8.06.2010 - 14:25) Guest написал(а):
ApuktaChehov
спасибо, получилось, только i не нужно, регистр важен)

Спустя 44 секунды (8.06.2010 - 14:26) Guest написал(а):
ApuktaChehov
без плюсика тоже работает))))

Спустя 1 минута, 4 секунды (8.06.2010 - 14:27) ApuktaChehov написал(а):
Я думаю его лучше поставить. Так как будет искаться хотя бы один символ, а если ничего не найдется, то вернет фалсе, что и надо. А без плюсика хз что будет. wink.gif

Спустя 1 минута, 42 секунды (8.06.2010 - 14:28) Guest написал(а):
ApuktaChehov
кол-во символов в полях контролируется ранее, так что все ок, спс!!

Спустя 1 минута, 31 секунда (8.06.2010 - 14:30) ApuktaChehov написал(а):
Всегда пожалуйста!

Спустя 1 минута, 39 секунд (8.06.2010 - 14:31) tomash написал(а):
2Guest
сорри! а так? /^[-а-zA-Z_]+$/

Спустя 2 минуты, 51 секунда (8.06.2010 - 14:34) ApuktaChehov написал(а):
tomash это неверная регулярка. Смысл в том, что бы найти что-то, кроме того, что разрешит разработчик. А это что-то, может быть где угодно в строке. А вы жестко привезались к началу и концу строки.

Да и еще, Guest, я все же рекомендую поставить плюс.
По задумке мы ищем в строке хотя бы один символ, который не входит в те, которые вы разрешили. Без плюса, может и работает, но это некорректно с логической точки зрения. К томуже я не знаю, как себя дальше поведет это выражение, если без плюса.

Спустя 11 минут, 32 секунды (8.06.2010 - 14:46) Guest написал(а):
ApuktaChehov
поставил!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.