<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Bonjour à tous,<br>
    <br>
    <br>
    Un peu hors-sujet mais ça pourrait aider les outils de contrôle
    qualité d'OSM.<br>
    Dans les divers outils et process informatiques il n'est pas
    toujours possible d'aller appeler la BAN pour vérifier le nom d'une
    commune.<br>
    Je cherche donc à vérifier a minima la syntaxe d'un nom de commune à
    travers une regexp. J'ai produit la regexp suivante qui passe mes
    tests sauf qu'elle me semble un peu trop permissive. Toute remarque
    ou aide appréciée :)<br>
    (J'ai utilisé la forme "extended" qui permet d'étaler la regexp sur
    plusieurs lignes et de la commenter.)<br>
    <br>
    <tt>/<br>
      ^<br>
      (                           # Débute par un article<br>
        Le\ |La\ |Les\ |Los\ |Aux\ |L'<br>
        |                         # ou<br>
      )                           # rien<br>
      <br>
      ([A-ZÉÇŒÈÎ])                # Suivi d'une majuscule<br>
      <br>
      (                           # puis ...<br>
       ((-|                       #   un trait-d'union ou<br>
        \ |                       #   un espace ou<br>
        \ -\ |                    #   un espace suivi d'un trait d'union
      suivi d'un espace ou<br>
        ')                        #   une apostrophe<br>
        [A-ZÉÇŒÈÎ])               #   suivi d'une majuscule<br>
       |                          #   ou bien<br>
       ('|-|\ |)                  #   une apostrophe ou un trait-d'union
      ou un espace ou rien<br>
        [a-zàâéèêëïîÿôûüœç]       #   suivi d'une minuscule<br>
      )*                          # 0 ou plusieurs fois<br>
      <br>
      (                           # terminé par<br>
        \ \([A-Z][a-z]*\)         # un espace suivi d'un mot entre
      parenthèse débutant par une majuscule<br>
        |                         # ou<br>
      )                           # rien<br>
      $<br>
    </tt><tt>/gmx                        # global, multiline, extended</tt><tt><br>
    </tt><br>
    Vous pouvez la retrouver et la tester ici :
    <a class="moz-txt-link-freetext" href="https://regex101.com/r/knDFaB/4">https://regex101.com/r/knDFaB/4</a><br>
    <br>
    J'ai listé ci-dessous des cas de tests invalides, théoriques et
    valides.<br>
    <br>
    <b>Invalides</b><b><br>
    </b>AA<br>
    NNouvelle<br>
    A'<br>
    Nouvelle'<br>
    A-<br>
    Nouvelle-<br>
    AA'<br>
    AA-<br>
    NNouvelle'<br>
    NNouvelle-<br>
    -Ville<br>
    --Ville<br>
    'Francheville<br>
    ''Francheville<br>
    A''ville<br>
    L''Épine<br>
    A--Ville<br>
    Nouvelle--Ville<br>
    A  Ville<br>
    Nouvelle  Ville<br>
    A'-Ville<br>
    Nouvelle'-Ville<br>
    A-'Ville<br>
    Nouvelle-'Ville<br>
    A' Ville<br>
    Nouvelle' Ville<br>
    A- Ville<br>
    Nouvelle- Ville<br>
    Nouvelle-es- Ville<br>
    Saint-Martin-es- Ville<br>
    AAA<br>
    AaA<br>
    A  a<br>
    A  A<br>
    <br>
    <br>
    <b>Théoriques ???</b><b><br>
    </b>A A<br>
    A'A<br>
    A-A<br>
    Nouvelle'Ville<br>
    <br>
    <br>
    <b>Valides (communes existantes)</b><b><br>
    </b>Marseille<br>
    Saint-Remy-en-Bouzemont-Saint-Genest-et-Isson<br>
    Saint-Martin-d'Hères<br>
    Hœdic<br>
    Saint-Genis<br>
    Y<br>
    Ay<br>
    Bû<br>
    Oô<br>
    Aast<br>
    Niederschaeffolsheim<br>
    Kermoroc'h<br>
    M'tsangamouji<br>
    L'Île-Rousse<br>
    L'Épine<br>
    Le Mans<br>
    La Celle-Saint-Cloud<br>
    Le Pont-de-Beauvoisin<br>
    Hitiaa O Te Ra<br>
    Saint-Nom-la-Bretèche<br>
    Saint-Germain-de-Tallevende-la-Lande-Vaumont<br>
    Beaujeu-Saint-Vallier-Pierrejux-et-Quitteur<br>
    Île-aux-Moines<br>
    Île-d'Aix<br>
    Château-Chinon (Campagne)<br>
    Château-Chinon (Ville)<br>
    Noirmoutier-en-l'Île<br>
    Aix-Villemaur-Pâlis<br>
    La Chapelle du Lou du Lac<br>
    Saint-Thégonnec Loc-Eguiner<br>
    Val d'Arcomie<br>
    Ance Féas<br>
    Le Bas Ségala<br>
    Le Haut Soultzbach<br>
    Bairon et ses environs<br>
    Dhuys et Morin-en-Brie<br>
    Parves et Nattages<br>
    Haut Valromey<br>
    Saint Paterne - Le Chevain<br>
    Pont de Montvert - Sud Mont Lozère<br>
    Saint Géry-Vers<br>
    Villages du Lac de Paladru<br>
    Bagnoles de l'Orne Normandie<br>
    Cœur de Causse<br>
    Beauce la Romaine<br>
    Les Hauts d'Anjou<br>
    Les Pechs du Vers<br>
    Segré-en-Anjou Bleu<br>
    Ingrandes-Le Fresne sur Loire<br>
    Montrichard Val de Cher<br>
    <br>
    <br>
    Charles.<br>
    <br>
  </body>
</html>