2016-09-03 2 views
-1

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

`preg_match_all("/(?:[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])+)\])/i",$filtered, $email); 
print_r($email[0]);` 

Я не в состоянии соответствовать такой адрес электронной почты:

%[email protected]

+0

Это адрес электронной почты является артефактом веб-протокола (если '>' был частью адреса, а не разметкой SO, то я имею в виду * скребок *), повторно используя. Скорее всего, это было изначально пространство. В противном случае см. Http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address. – LSerni

ответ

1

попробовать это

<?php 
preg_match_all("/^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/",$filtered, $email); 
print_r($email[0]); 
?> 
Смежные вопросы