La difficulté des particules nobiliaires
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 d’origine française, 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 :
Ressource :
https://regex101.com/
Voici quelques exemples pour illustrer ce que j’aimerais réaliser :
– "Dubois " devrait être rejeté (la chaine finit 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 entouré par des espaces).
– "Dubois-De La Patelière" devrait être accepté.
– "Dubois-DeLa Patelière" devrait être rejeté (il y a 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.
Modifié par Pyanepsion (19 Mar 2024 - 08: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 d’origine française, 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 :
https://regex101.com/
Voici quelques exemples pour illustrer ce que j’aimerais réaliser :
– "Dubois " devrait être rejeté (la chaine finit 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 entouré par des espaces).
– "Dubois-De La Patelière" devrait être accepté.
– "Dubois-DeLa Patelière" devrait être rejeté (il y a 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.
Modifié par Pyanepsion (19 Mar 2024 - 08:23)