Здравствуйте. Сколько не читал, не как не могу понять регулярные выражения для preg_match Задача такая. Разрешить Английский и русский алфавит A-Z a-z А-Я а-я и длина от 3х до 20 символов {3,20} Кодировка у меня UTF-8. Делал так, но что то не работает. Можно ведь проще сделать. Подскажите пожалуйста Код (Text): # проверям Имя if(!preg_match("/[^a-z A-Z0-9а-яА-Я]/u",post('name'))) { $error[] = "Имя содержит не допустимые символы."; } # проверям Фамилии if(!preg_match("/[^a-z A-Z0-9а-яА-Я]/u",post('last-name'))) { $error[] = "Фамилия содержит не допустимые символы."; } # проверям Имя if(!preg_match("/^.{3,20}$/",post('name'))) { $error[] = "Имя от 3 до 20 символов"; } # проверям Фамилию if(!preg_match("/^.{3,20}$/",post('last-name'))) { $error[] = "Фамилия от 3 до 20 символов"; }
Такое выражение пропускаю всю фигню, если в строчке есть хотя бы одна русская или английская буква. Например <><>ааа Он пропускает. <''''''''>>>>!!!$ ZZZZ Он пропускает
о боги... одни и те же грабли. ну как логика написана так регулярка и пропускает. инверсия от поиска допустимого НЕ РАВНО ЛОГИЧЕСКИ поиску недопустимого. искать надо недопустимое. понимаете?
так поищи. я за пару последних недель не один раз вижу вот эту шнягу и помогаю ее исправить. хорошо бы вы заткнули ту дыру в которой вы берете этот говнокод, но я понимаю что откроется другой источник искаженных знаний.