JeuWeb - Crée ton jeu par navigateur

Version complète : [Réglé]Expression rationnelle - Noms de ville
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
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.
\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\-\']$/'
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.