Publié le :
Utilitaire CREATION_INTERNE

Validation d'adresses email avec PRXMATCH et FCMP

Ce code est également disponible en : English
En attente de validation
Le script commence par créer un jeu de données nommé `test_email` contenant une liste d'adresses email, certaines étant valides et d'autres non, via des `datalines`. Ensuite, il définit une fonction SAS© personnalisée `CheckMail` en utilisant `PROC FCMP`. Cette fonction prend une chaîne de caractères (l'adresse email) en entrée, la convertit en minuscules, puis utilise l'expression régulière `PRXMATCH` pour vérifier si elle correspond à un format d'adresse email standard. Le résultat de la validation (0 si non valide, 1 si valide) est retourné. Enfin, un second `DATA STEP` est utilisé pour appliquer cette fonction `CheckMail` à chaque adresse email du jeu de données `test_email` et stocker le résultat dans une nouvelle variable `Cmail`.
Analyse des données

Type : CREATION_INTERNE


Les données sont entièrement créées en interne au sein du script via des `datalines` dans le premier `DATA STEP`. Le second `DATA STEP` utilise le jeu de données créé précédemment.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc `DATA STEP` crée un jeu de données temporaire nommé `test_email`. Il lit des adresses email fournies directement dans le script via des `datalines`. La variable `email` est définie comme un caractère d'une longueur maximale de 32.
Copié !
1DATA test_email;
2 informat email $32.;
3 INPUT email;
4 DATALINES;
5 test @test.fr
6 Test @test.fr
7 test @test..fr
8 .test @test.fr
9 .test @@test.fr
10 test @code_sas_json/marktest.json @test.fr
11 1.test @test.fr
12 n.test @test.fr
13;
14RUN;
2 Bloc de code
PROC FCMP
Explication :
Ce bloc `PROC FCMP` définit une fonction personnalisée nommée `CheckMail`. Elle est stockée dans la bibliothèque `work.cat_function` sous l'entrée `test`. La fonction prend un argument `Email` (chaîne de caractères), le convertit en minuscules, puis utilise `PRXMATCH` avec une expression régulière pour vérifier la validité du format de l'adresse email. `PRXMATCH` retourne la position du match si trouvé, ou 0 sinon. Ce résultat (0 ou >0) est retourné par la fonction.
Copié !
1PROC FCMP outlib=work.cat_function.test ;
2 function CheckMail(Email $);
3 mail=Email;
4 res = prxmatch("/^" !!
5 "[a-z0-9#\$%&'*+\/=\]+?^_`\{|\}~-]+" !!
6 "(?:\.[a-z0-9!#\$%&'*+\/=\?^_`\{|\}~-]+)*" !!
7 " @" !!
8 "(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+" !!
9 "[a-z0-9]" !!
10 "(?:[a-z0-9-]*[a-z0-9])?" !!
11 "/"
12 ,
13 lowcase(mail));
14 return(res);
15 endsub;
16RUN;
3 Bloc de code
DATA STEP
Explication :
Ce second `DATA STEP` lit le jeu de données `test_email` créé précédemment. Pour chaque observation, il appelle la fonction `CheckMail` avec l'adresse email et stocke le résultat de la validation (0 ou 1) dans une nouvelle variable numérique `Cmail`.
Copié !
1DATA test_email;
2 SET test_email;
3 Cmail=CheckMail(email);
4RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Creation date : 09/04/2017 (fr) Last update : 09/04/2017 (fr) Author(s) : Contributor(s) : Tested on SAS Studio 9.4