Expression régulière

Lettre espace et tiret uniquement

Le problème exposé dans ce sujet a été résolu.

Bonjour, Je suis vraiment pas bon en expression régulière,

Je cherche une expression régulière qui n’accepte QUE les lettres, les espaces et les tirets. Par défaut j’ai fait le script ci dessous, mais les caractères spéciaux sont acceptés et ce n’est pas le résultat attendu.

$nom = "Jérôme/ \% = +D@uTié@ç'z áéðíóúýþæö";

$patern ="#^[\\w-]+#i"; 


if (preg_match($patern, $nom)) {
    echo $nom.' ne contient <b>QUE</b> des lettres (avec ou sans accent, des espaces ou des tirets';
} else {
    echo $nom.' ne contient <b>pas que</b> des lettres (avec ou sans accent, des espaces ou des tirets';
}

J’ai essayé aussi

$patern ="#^[a-z ']+#i";

on dirait que % @ … sont considérés comme des lettres…

précisions: les accents doivent être accepter

+0 -0

le nom est "Jérôme/ \% = +D@uTié@ç’z áéðíóúýþæö" il ne devrait donc pas matcher. si il matche, c’est KO. bref, tu as raison, la logique est importante. Je viens de modifier le code du preg_match pour que cela soit plus lisible.

PG06 c’est toi qui t’approche le plus. Toutefois, les accents sont refusés alors qu’il faudrait les accepter.

+0 -0

Du coup c’est peut-être un peu "moche" mais un truc comme ça fonctionne (si on n’oublie rien) :

^[A-Za-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿñÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÒÓÔÕÖÙÚÛÜÝŸÑ -]+$

+0 -0

@Chinoisfurax en effet, mais il faut souligner que c’est une directive propre au compilateur de regex PCRE (Perl Compatible Regular Expression), du coup il faut que le langage (ou la lib) supporte cette syntaxe, typiquement, Perl, PHP (et probablement d’autre), mais pas JavaScript. Du coup si @Leeroy Jenkins veut faire une vérification coté client et serveur il va devoir utiliser les regex données précédement (au moins coté client).

+2 -0

Rien, mais la raison pour laquelle c’est une mauvaise idée de choisir arbitrairement un ensemble de caractère qui "pour toi ressemblent à des lettres", plutôt que de te reposer sur ce sur quoi des gens assez intelligents, dont c’est le métier, ont à te proposer (avec ctype_alpha, par exemple, ou ce que Chinoisfurax proposait) me semble assez claire.

+0 -0

J’ai du mal a te relire, je ne dois pas être assez intelligents selon tes critères.

J’ai un besoin particulier, que cela ne rentre pas dans des préceptes majestueux j’en conviens, mais c’est une demande du client, définie dans les spécifications, que j’ai validé et que je trouve cohérente et légitime.

Je te remercie toutefois pour ta participation.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte