Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.249.247] |
|
Сообщ.
#1
,
|
|
|
Имеем код:
$aaa = "asd123"; if ( preg_match ("/([a-z0-9])*/i", $aaa)) { print "OK"; } else { print "BAD"; } выдаёт OK, как впринципе и нужно. Дальше: $aaa = "asd|1\a$@&$aa23"; if ( preg_match ("/([a-z0-9])*/i", $aaa)) { print "OK"; } else { print "BAD"; } тоже выдаёт ОК, хотя кроме букв и цифр куча посторонних символов. Не хотят работать регулярные выражения или это я идиот? |
Сообщ.
#2
,
|
|
|
Все правильно. Условие "совпадать 0 или более раз" (*) выполняется. Оно будет выполняться даже тогда, когда в строке буквами и пахнуть не будет. А вот если сказать "/^([a-z0-9])*$/i", то все будет, как надо -- потребует букв и цифр от начала до конца строки.
|
Сообщ.
#3
,
|
|
|
Ho Im, блин, ну я и ступил... огромный Сэнкс!
|
Сообщ.
#4
,
|
|
|
Ho Im, тогда уж условие !preg_match("/[^a-z0-9]/si", $aaa) - как минимум, должно быть пошустрее
/me поздно заметил, что * неуместен |
Сообщ.
#5
,
|
|
|
Ну, это когда стремимся к Совершенству. А когда просто исправляем ошибочку -- имхо хватит и этого. (Делает copy/paste в рабочую тетрадь)
|