5572 sujets

Sémantique web et HTML

Bonjour,
ce matin, je m’aperçois que les regex permettant d’avertir d’un mauvais formatage du champ "mails" ne fonctionnent plus sur mon formulaire. Le champs html "required" fonctionne. Si je n’entre rien, il y a un avertissement, aussi bien sur le courriel que sur la partie texte. Par contre, je peux mettre n’importe quel courriel mal formé (à en place de @), il ne le détecte pas. Je ne sais pas depuis quand, je viens de le découvrir par hasard.
<input type="text" id="mailpost" name="mailpost" required pattern="^(?!.*([.-])\1)(?!.*([.-])$)(?!.*[.-]$)(?!.*[.-]{2})[a-zA-Z0-9_%+-][a-zA-Z0-9._%+-]*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$">

Et curieusement, j’ai le même problème sur deux sites, chez des hébergeurs différents.
Que se passe-t-il??
Je peux ajouter que la vérification de la conformité des mails est aussi en place sur le php
function isValidEmail($email)
 {
    return preg_match('/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/i', $email);
}

Modifié par Bongota (15 Jan 2025 - 12:56)
Merci, mais je ne pense pas que ça va régler mon problème.
Il y a quelque chose qui s'est passé, pour que les formulaires de mes deux sites aient le même bug. Sur l'un d'entre eux, je n'ai rien touché depuis des semaines. Et les deux n'ont pas le même hébergeur. Et tout fonctionne, l'envoi du courrier, les filtres php. Sauf ce regex sur le mail.
Et avec deux navigateurs différents, Firefox et Chrome.
Bon bah je pige pas trop ..
Si je test sur regex101 ça m'a l'air bon mais si je test ici en modifiant le html j'obtiens une erreur dans la console :
Pattern attribute value ^(?!.*([.-])\1)(?!.*([.-])$)(?!.*[.-]$)(?!.*[.-]{2})[a-zA-Z0-9_%+-][a-zA-Z0-9._%+-]*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ is not a valid regular expression: Uncaught SyntaxError: Invalid regular expression: /^(?!.*([.-])\1)(?!.*([.-])$)(?!.*[.-]$)(?!.*[.-]{2})[a-zA-Z0-9_%+-][a-zA-Z0-9._%+-]*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/v: Invalid character in character class
Il est certain que j'ai changé pas mal de choses, en peu de temps. Changé de système, toujours Debian, donc des nouveaux logiciels mis à jour. J'ai vérifié l'éditeur, il est en UTF 8. J'ai changé d'hébergeur (mais sur l'autre site qui n'a pas bougé, c'est le même problème).
Et sur un troisième site, en gratuit chez free, même problème. Et avec le même code php et html pour le formulaire. Là non plus, je n'ai rien touché depuis des semaines.
Bah autant une petite regex j'aurai sans doute essayé de voir ce qui déconne , autant la Smiley bawling

Perso je partirais sur du input type="email" pour le coté client , et coté php sur des filters : https://www.php.net/manual/en/filter.constants.php#constant.filter-validate-email

Edit : finalement trouvé le bug je crois : il manque des \ avant les tirets

<input type="text" id="mailpost" name="mailpost" required pattern="^(?!.*([.\-])\1)(?!.*([.\-])$)(?!.*[.\-]$)(?!.*[.\-]{2})[a-zA-Z0-9_%+\-][a-zA-Z0-9._%+\-]*@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$">

Modifié par Mathieuu (16 Jan 2025 - 10:41)
Les apport des \ n'ont pas résolu le problème.
Je crois qu'il y a quelque chose ailleurs. Je vais prendre mon temps, plutôt que m'acharner sur ces regex. Merci de m'avoir aidé.
Bien ton petit jsfidle. Smiley smile
Juste avant de lire ton message, j'avais réussi à le faire fonctionner Smiley confus
Pour tout dire, j'ais supprimé sur le serveur un fichier php d'expérimentation que j'avais installé, justement il y a deux ou trois jours. Et sur le htaccess, j'ai enlevé le # sur Options -Indexes. Je penche bien plus sur le fichier php qui semait le désordre. Mais alors pourquoi, je ne vais pas y passer mon après-midi. Je suis de toute façon pas assez qualifié en php pour le découvrir.
Merci pour tout.