Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Regex] Vérification de noms de famille composés

La difficulté des particules de noblesse

    17 mars 2024 à 18:39:23

    Bonjour à tous,
    Je me tourne vers vous aujourd’hui dans l’espoir de trouver une solution à un défi technique sur lequel je travaille actuellement. Je suis en train de concevoir un formulaire de saisie nominative et je souhaite m’assurer que les noms de famille, même composés, soient correctement validés selon des critères spécifiques. 
    Le but est de créer une expression régulière pour un attribut « pattern » dans un élément « input » HTML, qui valide les noms de famille composés en autorisant uniquement certains séparateurs (espace [ ], trait d’union [-], apostrophe droite ['], et apostrophe courbe [’]). Chaque mot doit commencer par une lettre majuscule suivie de lettres minuscules, à l’exception de six cas particuliers concernant les particules de noblesse (« de », « des », « du »), qui doivent être en minuscules et correctement espacées pour être acceptées. En outre, les formes majuscules de ces particules, lorsqu’elles sont entourées d’espaces, doivent être explicitement rejetées.
    Source réduit :
    <!DOCTYPE html>
    <html lang="fr">
    <head>
      <meta charset="UTF-8">
      <title>Validation de Nom</title>
      <style>
        input:focus:invalid {
          background-color: red;
        }
        input:focus:valid{
          background-color: green;
        }
      </style>
    </head>
    <body>
      <form action="/submit-form" method="post">
        <label for="nom">Nom :</label>
        <input
          id="nom"
          class="nom"
          name="nom"
          type="text" id="nom" name="nom"
          minlength="1"
          maxlength="28"
          pattern="^[A-ZÀ-Ÿ][a-zà-ÿ]*(?:[ s\-'’][A-ZÀ-Ÿ][a-zà-ÿ]*)*$"
          title="Chaque mot doit commencer par une majuscule suivie de minuscules. Les mots peuvent être séparés par une espace, un trait d'union, une apostrophe droite ou une apostrophe courbe."
          required
          autocomplete="given-name"
          spellcheck="false"
          autocapitalize="none"
          placeholder="Jean"
          aria-invalid="false"
          enterkeyhint="next">
        <button type="submit">Envoyer</button>
      </form>
    </body>
    </html>
    Ressource :
    Voici pour illustrer quelques exemples de ce que j’aimerais réaliser :
    • "Dubois " devrait être rejeté (fini par une espace).
    • "Dubois de La Patelière" devrait être accepté.
    • "Dubois-de La Patelière" devrait être rejeté (le « de » en minuscule n’est pas précédé d’une espace).
    • "Dubois-de-La Patelière" devrait être rejeté (le « de » en minuscule n’est ni précédé ni suivi d’une espace).
    • "Dubois-De La Patelière" devrait être accepté.
    • "Dubois-DeLa Patelière" devrait être rejeté (plus d’une majuscule dans un mot).
    Je suis conscient que cette demande est assez spécifique et pourrait présenter une complexité notable pour une mise en œuvre en une seule expression régulière. D’un autre côté, il doit bien y avoir une solution en regex.
    Je vous remercie d’avance pour votre temps et pour votre expertise.

    -
    Edité par Pyanepsion 18 mars 2024 à 8:57:20

    • Partager sur Facebook
    • Partager sur Twitter

    [Regex] Vérification de noms de famille composés

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    • Editeur
    • Markdown