8722 sujets

Développement web côté serveur, CMS

Bonjour,
les regex que j'ai mis sur un formulaire (html) fonctionnent très bien sur le champ mail. Par contre, les mêmes regex n'ont aucun effet sur le champ textarea. Il s'agit d'un premier degré de protection, étant entendu qu'il faut aussi en mettre côté serveur. Là par contre, ça fonctionne en JavaScript sur le champ textarea.
Le champ mail sur mon formulaire :
<input type="text" name="mailpost" required pattern="^[A-Za-z]+@{1}[A-Za-z]+\.{1}[A-Za-z]{2,}$">

Le champ textarea :
<textarea id="message" name="message" cols=3O rows=3 required pattern="[^pas|pourquoi|jamais]$"></textarea>

Si je rentre une phrase avec ces mots (qui ne sont pas ceux que j'utiliserai), le formulaire devrait refuser de partir.
Il est dit nul part que les regex ne fonctionnent pas sur textarea.
Modérateur
Salut,


^((?!un_mot|un_autre_mot).)*$


Bizarrement, ça ne fonctionne pas et pourtant en JS, j'ai bien un retour probant de ce pattern.
Modifié par niuxe (06 Jun 2023 - 15:10)
Ne fonctionne pas. Je croyais que le ^ devait être mis derrière les parenthèses pour exprimer la négation. Parce qu'il s'agit bien dans mon cas de refuser les mots entrés entre le [ ] et non pas de les valider.
C'est bien ce que j'avais cru lire un jour, mais il y a tant de sites qui décrivent des regex sur textarea que j'ai cru que c'était enfin activé.
Je vais le faire en php, ce sera un pierre deux coups.
Merci.
Et avec ça ?

pattern="^(?!.*(pas|pourquoi|jamais)).*$"

^ : Début de la chaîne.
(?!.*(pas|pourquoi|jamais)) : Utilisation d'une assertion négative pour vérifier qu'aucun des mots spécifiés (pas, pourquoi, jamais) ne se trouve dans la chaîne.
.* : Correspond à n'importe quel caractère (sauf les sauts de ligne) zéro ou plusieurs fois.
.*$ : Correspond à tous les caractères jusqu'à la fin de la chaîne.
$ : Fin de la chaîne.
Ça ne fonctionne pas non plus, mais si les regex ne sont pas possible sur textarea, pas la peine de continuer.
Bonsoir,

Avec du retard... le mieux est de le faire en JavaScript. De toute façon, même lorsque les patterns HTML sont disponibles ils posent des problèmes de personnalisation.

@Bongota, voici pour toi un CodePen montrant un textarea exigeant un prénom. Celui-ci sera formaté si espace blanc, si pas de majuscule, déclarera une erreur si présence de chiffres, etc : CodePen.
Modifié par Olivier C (10 Jun 2023 - 07:52)
Merci Olivier.
Cependant, ce que je veux, c'est éliminer certains mots, choisis par moi-même et non pas un placeholder. Là, on est dans l'obligation de mettre quelque chose (choisie à l'avance). Ce que je veux, c'est l'élimination de certains mots, choisis par mes soins.
Mais je retiens ta piste, elle est très bonne pour contourner le fait que les regex n'agissent pas sur textarea.
En attendant, j'ai trouvé un script qui convient parfaitement à ce que je cherche :
https://www.c2script.com/scripts/fonction-php-qui-interdit-des-mots-dans-un-formulaire-s22.html
Le script fonctionne mais je dois le corriger quelque part parce que pour le moment, il me dit que mon formulaire ne contient pas de mots interdits, alors que j'en ai mis une liste.
J'ai aussi fait en JS avec "replace" un tout petit script, pas terminé, qui permet d'éliminer des listes de mots choisis.
var sentence = 'Olivier dort'
var result = sentence.replace(/dort/g, "code"); 
console.log(sentence.replace);

On peut y mettre des dizaines de mots, il suffit de répéter les séquences. En ne mettant rien entre '', on élimine le mot. J'ai essayé avec des paragraphes entiers, ça fonctionne très bien.
Cependant, mes connaissance en JS ne sont pas encore assez avancées pour lier ce script à un formulaire.
Non non, il y a bien un placeholder dans le CodePen mais il ne s'agit pas de cela. Tu as vu le script ? Il est composé de string.replace()...
La honte, je n'ai même pas regardé ton code, j'ai juste effectué un essai.
Donc tu ne dors pas, tu codes Smiley lol
Bien, vu, mais serait-il possible de faire appel à un document extérieur au script, afin d'y entrer des mots complets ? On peut ajouter ou enlever des signes à interdire dans le script, mais des mots complets, ça devient lourd. Dans mon post plus haut, il n'y en a qu'un, mais j'en ai un paragraphe entier.
Bongota a écrit :
Donc tu ne dors pas, tu codes Smiley lol

C'est un peu ça Smiley confus ... mais pas totalement vrais car je m'appuie sur ce que j'ai déjà créé (et j'ai du stock !), en l’occurrence ici : formValidation.js, toujours issue de ma boite à outils perso "Scriptura" que je mets à jour de temps à autre.

Bongota a écrit :
serait-il possible de faire appel à un document extérieur au script

Bien sûr, par exemple alain_47, dans la présentation de son jeu d'échecs, nous en a montré récement un exemple.

On pourrait aussi utiliser un fichier JSON appelé avec la fonction fetch(), ensuite il faut parser le fichier. Au final c'est un peu de boulot.
Modifié par Olivier C (10 Jun 2023 - 22:57)