Can you count the letter r in:
Q: E-mail - регулярное выражение Подскажите хорошее регулярное выражение, которое бы определяло, введен пользователем e-mail или что-то другое.
Также можете советовать функции по проверке e-mail или еще что-то. Делаю упор на безопасности, т.е. на качестве определения e-mail.
Если кроме e-mail еще введено что-то, то оно не должно выполняться.
A: filter_var(bob@example.com, FILTER_VALIDATE_EMAIL);

A: preg_match(/(?:[a-z0-9!#$%&\*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\*+\/=?^_`{|}~-]+)*|(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\\\[\x01-\x09\x0b\x0c\x0e-\x7f])*)@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/, $email)

(Если парсер чего-то съел, я не виноват)
A: (^[a-zA-Z0-9-_\.]+@[a-zA-Z0-9-_]+?\.[a-zA-Z]{2,6})

взято из этого cheatsheet
upd: плохая регулярка. не используйте (дорабатываю).
upd: теперь вроде жизнеспособно.
A: Смотрите аналогичный вопрос на stackoverflow, там подробно описано.
Напоминаю, что very.(),:;<>[]\.VERY.\very@\\\ \weird\.address@yarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.странныйсайт.рф — это вполне корректный адрес email. И если бы такой домен был, то на него могла бы прекрасно ходить почта.
Если Вы хотите защититься от какой-либо инъекции (SQL, PHP, HTML, ...) — экранируйте данные, а не проверяйте корректность адреса. Последнее — не поможет.

A: раз пошла такая тема то.
/^[a-zA-Z_\.-][a-zA-Z0-9_\.-\d]*\@[a-zA-Z\.-\d]+\.[a-zA-Z]{2,4}$/

тогда так
A: Регулярка + checkdnsrr - не?
A: eregi(^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]

Пользуюсь этой.
user
In that passage, there are 61 occurrences of the letter "r."
assistant