Это часть функции для проверки адресов электронной почты в phpbb. У меня есть VALID адрес электронной почтыRegex для адреса электронной почты не принимается '&' before 'dot'
"pwd-p & r2.coop @ ...", но он не принят валидацией.
Самое интересное, что когда я попытался "pwd-pr2.co & оп @ ..." (с '&' после 'точки')
и «PWD пр & 2coop @ ... «(без« точки »), оба действительны,
но« pwd-pr & 2.coop @ ... »(с« точкой »после« & ') нет.
Я попытался изменить регулярное выражение в течение нескольких дней, но до сих пор не понял, как его исправить, чтобы он принял мой адрес электронной почты.
function get_preg_expression($mode)
{
switch ($mode)
{
case 'email':
// Regex written by James Watts and Francisco Jose Martin Moreno
// http://fightingforalostcause.net/misc/2006/compare-email-regex.php
return '([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*(?:[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]|&)[email protected]((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,63})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)';
break;
}
}
'&' не является специальным символом в регулярном выражении, поэтому вам не нужно его избегать – Stephan
Я не могу подтвердить, для меня он соответствует 'pwd-p & r2.coop @ ...'. Какой движок регулярного выражения вы используете (какой язык программирования)? Существуют ли дополнительные ограничения для принятия валидации, кроме регулярного выражения? – Bergi
@ted: Нет. Предложенное там регулярное выражение явно не соответствует действительным адресам OP. Скорее взгляните на http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/ – Bergi