Сколько символов @ может быть в адресе электронной почты?

есть ли какое-либо правило для наличия указанного количества символа @ в любом идентификаторе электронной почты. Просто приходите мне на ум, если мы должны проверить, является ли идентификатор электронной почты действительным или не использует PHP.

6 ответов


Если enquoted несколько @ разрешено. Я должен спросить, зачем вам эта информация. Пожалуйста, пожалуйста!--2-->пожалуйста не пытайтесь написать функцию регулярных выражений / или что для проверки emailaddresses. Вам нужно беспокоиться о 3 rfc (и, возможно, 4, Если вы хотите принять во внимание unicode). А ты! .. --4-->будет не и будет свести вас с ума.

смотрите мой предыдущий ответ для получения дополнительной информации и выражения вы можете использовать, если у вас старая версия PHP

П. С.

в случае, если кто-то пропустил мою точку зрения: do не попробуйте придумать какую-то собственную проверку, чтобы проверить emailaddresses самостоятельно "когда-либо".


может быть любое число (в пределах размера адреса электронной почты), за исключением того, что последнее должно быть разделителем между доменным именем и "локальная часть".

Если @ или любые другие "необычные" символы (как определено RFC 5322) существуют в локальной части это должны отображаются в кавычках, e.g:"user@something"@example.com


нет определенного предела на @ символы.

"very.(),:;<>[]\".VERY.\"very@\ \"very\".unusual"@strange.example.com является допустимым адресом.

см. также страница Википедии на эту тему.


мой реальный вопрос: имеет ли смысл иметь два символа @ в электронном письме?
Как это будет работать?

Я хотел бы использовать filter_var() С FILTER_VALIDATE_EMAIL. Ниже приведен пример использования и вывода,

function testemail($email) {
    echo "'$email' => ";
    var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));    
    echo "<br />";
}

testemail('');
testemail('myemailsample.com');
testemail('myemail@sample');
testemail('myemail@sample.com');
testemail('myemail@@sample.com');
testemail('myemail@sa@mple.com');

выход

" = > bool (false)
"myemailsample.com' = > bool (false)
'myemail@sample' => bool (false)
"myemail@sample.com' = > строка (18) "myemail@sample.com"
"myemail@@sample.com' = > bool (false)
"myemail@sa@mple.com' = > bool (false)


чтобы проверить действительный адрес электронной почты, я должен использовать функцию filter_var. Он проверит строку и вернет true или false. Вам не нужно думать о регулярных выражениях.


addr-spec-это определенный идентификатор Интернета, который содержит локально интерпретируемая строка, за которой следует символ at-sign ("@", ASCII значение 64), за которым следует интернет-домен. Локально интерпретируемая строка-это либо строка в кавычках, либо точка-атом. Если строка может быть представлена как точка-атом (то есть она не содержит символы, отличные от символов atext или "."в окружении atext символы), затем следует использовать форму dot-atom и кавычки- строка форма не должна использоваться. Комментарии и складные пробелы Не следует использовать вокруг " @ " в спецификации addr.

см.: -http://tools.ietf.org/html/rfc5322#section-3.4.1