Question Expressions Régulière

Plus d'informations
il y a 9 ans 11 mois #17285 par buissonneau
Réponse de buissonneau sur le sujet Re:Expressions Régulière
ah ok, j'avais pas compris.

Je n'ai pas de jeux de test comme tu le décris, je pensais que le fait de mettre :
[code:1]$verifmail = $RegMail.Matches($mail)[/code:1]
ferait cela.
Je souhaite valider les adresses qui sont correctement écrites :
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

et invalider celle qui sont :
xxx.xxxx.xxx.xx
xxxx..xxxx@xxxx.xxx
bref toutes celles qui sont pas construites comme les deux du haut.

J'ai vu qu'avec ma regex j'obtiens bien une réponse par rapport à mes adresses qui sont bien construite, et lorsque ce n'est pas le cas il met rien.
Par contre je vois pas comment exploiter cette réponse et sur quelle base m'appuyer pour valider cette adresse ou la rejeter.

Merci.
Francis<br><br>Message édité par: xaviar, à: 4/04/14 14:27

Francis

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 11 mois #17286 par buissonneau
Réponse de buissonneau sur le sujet Re:Expressions Régulière
je viens de me rendre compte que j'ai pas mis mon message dans la partie entraide pour débutant &gt;o&lt;'

Francis

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 11 mois #17288 par buissonneau
Réponse de buissonneau sur le sujet Re:Expressions Régulière
j'ai testé cela :
[code:1][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');
$Name = Read-Host \&quot;Entrez un nom\&quot;
$Prenom = Read-Host \&quot;Entrez un prénom\&quot;
$Id = Read-Host \&quot;Entrez un Id\&quot;
$mail = read-host \&quot;entrez une adresse mail\&quot;
$RegMail = [regex]\&quot;[a-zA-Z0-9_%+-]+\.?[a-zA-Z0-9_%+-]+@[a-zA-Z0-9-]+\.?[a-zA-Z]{2,4}\&quot;

[bool]$verif = $false
$verifmail = $RegMail.Matches($mail)

if (($Name -eq $null) -or ($Id -eq $null) -or ($Prenom -eq $null))
{
$verif = $true
[System.Windows.Forms.MessageBox]::«»Show('Au moins un champs est vide, merci de le renseigner','Your_Desired_Title')
}
else
{
$verif=$false
[System.Windows.Forms.MessageBox]::«»Show('GG','Your_Desired_Title')
}
if (($verifmail).count -eq \&quot;0\&quot;«»)
{
[System.Windows.Forms.MessageBox]::«»Show('BAD MAIL','Your_Desired_Title')
}
else
{
[System.Windows.Forms.MessageBox]::«»Show('GOOD MAIL ','Your_Desired_Title')
}
[/code:1]

alors la cela fonctionne si je met un xxxx.xxxx.xxx j'ai bien une erreur, par contre si je met xxxx@xxxx j'ai pas d'erreur.

Francis
Une erreur dans ma Regex?

Francis

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 11 mois #17290 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Expressions Régulière
xaviar écrit:

Une erreur dans ma Regex?

Probablement:
[code:1]
$regex=\&quot;[a-zA-Z0-9_%+-]+\.?[a-zA-Z0-9_%+-]+@[a-zA-Z0-9-]+\.?[a-zA-Z]{2,4}\&quot;
$JeuxDeTest=@(
#valide
'Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.',
'Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.',
#invalide
'xxx.xxxx.xxx.xx',
'xxxx..xxxx@xxxx.xxx'
)
$JeuxDeTest|
Foreach {
\&quot;$_ -&gt; $($_ -match $regex)\&quot;
}
# Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. -> True
# Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. -> True
# xxx.xxxx.xxx.xx -&gt; False
# xxxx..xxxx@xxxx.xxx -> True
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 11 mois #17291 par buissonneau
Réponse de buissonneau sur le sujet Re:Expressions Régulière
Laurent, j'arrive pas à comprendre le JeuxDeTest.
Par exemple, si je veux valider tout adresse composer de
Nom.Prénom@site.fr (com ou autre) et NomPrénom@site.fr (com ou autre) faut que je les mettent dans #valide?
Mais donc je comparerais des adresses saisies par des gens qui peuvent être Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. ou Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser..

Je pensais que c'était le fait de faire le
[code:1]$verifmail = $RegMail.Matches($mail)[/code:1]

bon sauf que ma regex a l'air d'autoriser les bob@free
et du coup j'ai remarqué que lorsque l'adresse est validée le $verifmail.count = 1 et quand elle est pas valide =0

J'ai récupéré la regex d'un cours de formation powershell que j'avais eu et effectivement il laisse passer l'adresse bob@free

Je vais plancher sur ce que tu m'a écris.

Francis

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 11 mois #17292 par buissonneau
Réponse de buissonneau sur le sujet Re:Expressions Régulière
ok, je viens de comprendre le but du JeuxDeTest.
C'est pour vérifier la fabrication de ma regex?

et du coup elle est pas bonne.
[code:1]
$regex=\&quot;[a-zA-Z0-9_%+-]+\.?[a-zA-Z0-9_%+-]+@[a-zA-Z0-9-]+\.?[a-zA-Z]{2,4}\&quot;
$JeuxDeTest=@(
#valide
'Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.',
'Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.',
#invalide
'bob.free.fr',
'bob..smith@free.fr'
'bob.smith@free'
)
$JeuxDeTest|
Foreach {
\&quot;$_ -&gt; $($_ -match $regex)\&quot;
}
#bob@free.fr -> True
#bob.smith@free.fr -> True
#bob.free.fr -&gt; False
#bob..smith@free.fr -> True
#bob.smith@free -> True

[/code:1]

Francis

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.091 secondes
Propulsé par Kunena