Bonjour,
Je cherche à créer une regexp avec la fonction PHP preg_match_all permettant de capturer les emails NE CONTENANT PAS des mots spécifiques à l'aide d'un sous-masques conditionnels accompagnés d'assertions négative mais je n'arrive pas à créer l'expression idéal.
Pour l'instant j'ai ceci:
Code PHP :
#((?=.*@.*).*(?:oui|non).*)#ui
Code :
(?=.*@.*) // Si syntaxe email correct
.*(?:oui|non).* // Alors ont recherche si email contient 'oui' ou 'non'
Exemple:
Code PHP :
$html = "oui NoN aaOuIa@aaa.com aaOuIa@Non.com cCc aaa@aaa.com bbbb@bbb.com bbb";
preg_match_all(#((?=.*@.*).*(?:oui|non).*)#ui, $html, $matches);
Retourne:
Array
(
[0] => Array
(
[0] => aaOuIa@aaa.com
[1] => aaa@aNon.com
)
)
Cette expression conditionnelle permet de capturer les emails contenant les mots oui ou non si la première condition est rempli (Syntaxe email correct).
Je souhaite faire le contraire à l'aide de l'assertion négative (?!) en capturant les emails NE CONTENANT PAS les termes oui ou non.
J'ai donc essayez ceci:
Code PHP :
#((?=.*@.*)(?!.*(?:oui|non).*))#ui
Code :
(?=.*@.*) // Si syntaxe email correct
(?!.*(?:oui|non).*) // Alors ont recherche si email NE contient PAS 'oui' ou 'non'
J'ai tenter de m’appuyer sur cette article mais sans succès:
[ Lien ]
Merci pour votre aide.
Cordialement