Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/10/2007, 15h03   #1
Membre confirmé
 
Thomas Gambier
Inscription : avril 2005
Messages : 807
Détails du profil
Informations personnelles :
Nom : Thomas Gambier
Âge : 28
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : avril 2005
Messages : 807
Points : 243
Points : 243
Par défaut expression reguliere testant signe accentué

Bonjour,

Comment faire une expression régulière testant la présence soit d'un espace, soit d'un caractère accentué, soit d'un signe de ponctuation?

En gros, je veux que ma chaine soit compatible pour une url...

Y a t'il une autre solution que de lister tous les caractères?
calitom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 15h18   #2
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Salut,
oui tu peux utiliser urlencode().
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 15h21   #3
Membre confirmé
 
Thomas Gambier
Inscription : avril 2005
Messages : 807
Détails du profil
Informations personnelles :
Nom : Thomas Gambier
Âge : 28
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : avril 2005
Messages : 807
Points : 243
Points : 243
En fait, je vais prendre le problème de l'autre sens, ca me semble plus simple...
Je veux autoriser uniquement les caractères [a..z] [0..9] - et _
Comme ca, je suis sur qu'il n'y a pas de problème...

Alors comment faire une regexp qui test si une chaine est composée uniquement de cette liste de caractères?
calitom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 15h39   #4
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Dans ce cas ca donnerait ceci :

Code :
1
2
3
if(preg_match("`[^a-z0-9-_]`i", $str))	{
die("error");
}
Effectivement urlencode() est pas vraiement adapté.
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 15h42   #5
Membre confirmé
 
Thomas Gambier
Inscription : avril 2005
Messages : 807
Détails du profil
Informations personnelles :
Nom : Thomas Gambier
Âge : 28
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : avril 2005
Messages : 807
Points : 243
Points : 243
La fonction preg_match a un equivalent pour le javascript?
calitom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 16h10   #6
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Oui tu peux utiliser l'objet RegExp et la méthode match() de String.
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 16h19   #7
Membre confirmé
 
Thomas Gambier
Inscription : avril 2005
Messages : 807
Détails du profil
Informations personnelles :
Nom : Thomas Gambier
Âge : 28
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : avril 2005
Messages : 807
Points : 243
Points : 243
J'ai fait ca, mais je ne comprend pas pourquoi ca ne marche pas...
Code :
1
2
3
4
5
6
7
 
regexp_site = new RegExp("^[a-z0-9-_]+$");
if(nom_site.match(regexp_site)==false)
{
alert("Le nom du site ne peut contenir que des lettres minuscules sans accents, des chiffres et les symboles '-' et '_'");
return false;
}
Une idée?
calitom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 16h28   #8
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Euh t'as inversé le test :

Code :
1
2
3
4
regexp_site = new RegExp("[^a-z0-9-_]", "gi");
if(nom_site.match(regexp_site))	{
	alert("Le nom du site ne peut contenir que des lettres minuscules sans accents, des chiffres et les symboles '-' et '_'");
}
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 16h37   #9
Membre confirmé
 
Thomas Gambier
Inscription : avril 2005
Messages : 807
Détails du profil
Informations personnelles :
Nom : Thomas Gambier
Âge : 28
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : avril 2005
Messages : 807
Points : 243
Points : 243
Euh non:
Code :
1
2
3
4
5
6
7
8
9
 
regexp_site = new RegExp("^[a-z0-9-_]+$");
if(nom_site.match(regexp_site))
{}
else
{
alert("Le nom du site ne peut contenir que des lettres minuscules sans accents, des chiffres et les symboles '-' et '_'");
return false;
}
C'est pas très propre, mais ca marche...
calitom est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h31.


 
 
 
 
Partenaires

Hébergement Web