Framaform Forcer l'écriture en majuscule

Bonjour

Je souhaiterai que les répondants à un formulaires écrivent certains champs en majuscule
J’ai donc crée la règle suivante :

Edit validation rule nom en majuscule
Type de règle
Expression rationnelle sensible à la casse
Nom de la règle *
Composants
Identité: Nom
Identité: Prénom
Identité: Matricule
Identité: Adresse mail
Identité: merci de préciser
Sélectionner les éléments à valider par cette règle de validation
Code Regex (sensible à la casse) *
Spécifiez le code regex à utiliser pour valider l’entrée de l’utilisateur. N’incluez pas les délimiteurs tels que /.
Inverser la règle.
Valider l’inverse de la règle
Message d’erreur personnalisé *
Spécifiez un message d’erreur qui sera affiché lorsque la saisie de l’utilisateur ne passe pas la validation
J’ai copier le code regex depuis le site : https://apps.timwhitlock.info/js/regex#

La règle fonctionne à moitié: je ne peux pas valider un champs en minuscule, par contre je peux valider un champs qui comporte une seule majuscule (et non toutes les lettres comme je le souhaiterais)
Merci par avance pour vos réponses

Hello,

ça serait bien que tu donnes l’expression régulière que tu as récupéré :slight_smile:

bonjour
voici le code que j’ai utilisé
A-Za-zÀ-ÖØ-ÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİIJĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸ-ŹŻŽƁ-ƂƄƆ-ƇƉ-ƋƎ-ƑƓ-ƔƖ-ƘƜ-ƝƟ-ƠƢƤƦ-ƧƩƬƮ-ƯƱ-ƳƵƷ-ƸƼDŽLJNJǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮDZǴǶ-ǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺ-ȻȽ-ȾɁɃ-ɆɈɊɌɎͰͲͶΆΈ-ΊΌΎ-ΏΑ-ΡΣ-ΫϏϒ-ϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹ-ϺϽ-ЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀ-ӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸӺӼӾԀԂԄԆԈԊԌԎԐԒԔԖԘԚԜԞԠԢԱ-ՖႠ-ჅḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẞẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈ-ἏἘ-ἝἨ-ἯἸ-ἿὈ-ὍὙὛὝὟὨ-ὯᾸ-ΆῈ-ΉῘ-ΊῨ-ῬῸ-Ώℂℇℋ-ℍℐ-ℒℕℙ-ℝℤΩℨK-ℭℰ-ℳℾ-ℿⅅↃⰀ-ⰮⱠⱢ-ⱤⱧⱩⱫⱭ-ⱯⱲⱵⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢꙀꙂꙄꙆꙈꙊꙌꙎꙐꙒꙔꙖꙘꙚꙜꙞꙢꙤꙦꙨꙪꙬꚀꚂꚄꚆꚈꚊꚌꚎꚐꚒꚔꚖꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾꝀꝂꝄꝆꝈꝊꝌꝎꝐꝒꝔꝖꝘꝚꝜꝞꝠꝢꝤꝦꝨꝪꝬꝮꝹꝻꝽ-ꝾꞀꞂꞄꞆꞋA-Z]|\ud801[\udc00-\udc27]|\ud835[\udc00-\udc19\udc34-\udc4d\udc68-\udc81\udc9c\udc9e-\udc9f\udca2\udca5-\udca6\udca9-\udcac\udcae-\udcb5\udcd0-\udce9\udd04-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd38-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd6c-\udd85\udda0-\uddb9\uddd4-\udded\ude08-\ude21\ude3c-\ude55\ude70-\ude89\udea8-\udec0\udee2-\udefa\udf1c-\udf34\udf56-\udf6e\udf90-\udfa8\udfca]

essaie de supprimer « a-z » au tout début, juste après « A-Z »

Salut,

L’expression régulière s’exprime pour une partie de la valeur du champ. Raison pour laquelle, le champ est invalide lorsqu’il ne contient pas une seule majuscule et l’est lorsqu’il contient au moins une majuscule.

Il manque l’opérateur de grandeur. Mettre un astérisque (*) après l’expression indique que l’expression régulière peut se répéter plusieurs fois; un plus (+) signifie au moins une fois; le point d’interrogation (?) insiste sur le fait que l’expression doit être présente qu’une seule fois.

De plus il manque les spécificateurs de portée. En d’autres mots, il faut placer un caret (^) en début de l’expression et un dollar ($) à la fin pour dire que l’expression régulière s’applique à tout le champ et pas à une partie seulement. (Mettre uniquement le caret invite la vérification à se faire au tout début de la valeur du champ; et rien qu’un dollar à la fin insiste pour que l’expression régulière valide la fin de la valeur du champ)

En d’autres mots, il faut écrire:

^[A-Z .........\udfca]+$

Cela validera que le champ a au moins un caractère parmi ceux entre crochets [...]. Donc un en majuscule.

Et je rejoins @Ned sur le fait qu’il faille également enlevé le a-z (mais je crois que c’est une coquille de ta part, car quand je fais l’essai pour une regex rien que majuscule, sur le site que tu nous as fourni, ils n’apparaissent pas)


Maintenant, tu peux également utiliser un expression plus simple (*)

^[[:upper:]]+$

Mais je ne sais pas si cela tient compte de tous les caractères que tu as dans la regex fournie par le site web que tu utilises. A tester peut-être…

(*) Ce style d’expression est une classe de caractères. Il en existe plusieurs dont, entre autres, [[:space:]], [[:alnum:]], [[:alpha:]], [[:blank:]], [[:digit:]], [[:punct:]], [[:lower:]], [[:upper:]]

1 « J'aime »

Bonjour

Un grand merci pour toutes ces explications

L’expression ^[[:upper:]]+$ fonctionne effectivement très bien
Pour ce qui est du code, j’ai rajouté un ^ en début et +$ à la fin et cela fonctionne (je ne m’explique pas le" a-z "que j’ai retiré). Par contre j’ai du supprimer ce qu’il y avait après le premier ] (|\ud801[\udc00-\udc27]…)

Merci Ned
Effectivement cela n’avait pas grand chose à y faire
Sur la suggestion de PaliPalo j’ai rajouté un accent circonflexe en début d’expression et un"+$" en fin d’expression

,

Je suis allé un peu vite en besogne : les noms composés de passent pas (pas d’espace possible)
J’utilise donc l’expression ^[[:blank:][:upper:]]+$ et là nickel !

Et as-tu pensé aux noms composés avec tiret ou apostrophe ? :smirk:

Le mieux c’est comme je l’avais plus ou moins écrit dans un autre post qui est dans la même lignée que ta demande: ^[[:upper:]]+([- '][[:upper:]])*$

Ceci force l’utilisation d’une ou plusieurs majuscules séparées ou non par des tirets, espaces et apostrophe si et seulement si ces derniers sont suivis d’une ou plusieurs autres majuscules.

Cela permet de valider : A, A-B, A’B, A-C, A D, A B-C D’E F-G’H

Cependant, cela interdit la valeur de commencer par un des séparateurs (apostrophe, tiret, espace)

Attention à la partie [- '], le tiret doit se trouver en première position après le crochet ouvrant, sinon il pourrait être ignoré (car considéré comme le caractère séparateur dans une spécification de plage de valeur comme A-Z)

Question bête : est-ce que la règle [[:lower:]] inversée ne suffirait pas pour interdire tout caractère en bas de casse ?
Si j’ai bien compris, c’est ce que tu veux faire : interdire des minuscules dans les champs, non ?

1 « J'aime »

hé non :blush:
Jean-Marie Le Flo’ch et moi même on te remercie, je vais pouvoir maintenant écrire sont nom correctement

@Framasky, mais quel génie !

C’est vrai que l’idée était intéressante.
j’ai testé : sauf erreur je peux écrire tout (mélange minuscules majuscule) sauf tout en minuscule

C’est étrange. Tu as mis quoi, exactement, comme regex ?

le code : ^[[:lower:]]+$
puis j’ai coché Inverser la règle

C’est là ton erreur. Mets juste [[:lower:]] et inverse la règle.

Explication :

  • mon code dit « qu’il y ait au moins une minuscule, où que ce soit », et en inversé : « aucune minuscule »
  • ton code dit « que toutes les lettres soient en minuscule, du début à la fin », et en inversé « qu’il y ait au moins un caractère qui ne soit pas une minuscule »

Effectivement ça marche effectivement très bien

Merci pour ton intervention