JeuWeb - Crée ton jeu par navigateur
[Réglé]Expression rationnelle - Noms de ville - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Réglé]Expression rationnelle - Noms de ville (/showthread.php?tid=1152)



[Réglé]Expression rationnelle - Noms de ville - Yoda54 - 05-05-2007

Bonjour,

Je continue pour dur apprentissage des REGEX et j'étais en train d'essayer de trouver une expression permettant de vérifier qu'un nom de ville est correct.
Pour cela, il faut que la variable commence par un caractère alphabétique, qu'il se finisse par un caractère alphabétique et elle peut contenir des espaces, tirets ou apostrophes. J'en suis arrivé à la REGEX suivante:

Code PHP :
<?php 
preg_match
('`^[[:alpha:]]+[\'\s-]?[[:alpha:]]+$`')

Cette écriture fonctionnera bien tant que le nom de la ville ne contient qu'un seul espace, apostrophe ou tiret; donc la ville Saint-Ouen L'aumone sera rejetée. Comment faire en sorte que la présence de plusieurs de ces caractères soit acceptée?

Merci d'avance.


RE: Expression rationnelle - Noms de ville - naholyr - 05-05-2007

\w sera plut pratique que [:alpha:] car il inclut les accents & cie.
Sinon, la solution est simplement de tout mettre dans la même classe de caractères : '/^[\w\s\-\']$/'


RE: Expression rationnelle - Noms de ville - Yoda54 - 05-05-2007

Merci naholyr,

Le soucis de ton expression, c'est que si deux caractères spéciaux se suivent, l'expression est vraie tout de même.

Finalement, on m'a donné cette solution: ^[[:alpha:]]([-' ]?[[:alpha:]])*$

Pour le \w, c'est vrai qu'il intègre les caractères accentués, mais il intégre aussi les chiffres et le _, ce que je ne souhaite pas. Je rajouterai les lettres accentuées à la main dans l'expression.