IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Amélioration RegExp RCS


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 33
    Par défaut Amélioration RegExp RCS
    Bonjour,

    J'ai un pattern de RegExp que je voudrais améliorer (en écriture). Cette expression régulière doit valider un code RCS (registre de commerce et de société).
    Voici le pattern : NomVille XXX XXX XXX (ou X représente un chiffre).
    Je voudrais que ma chaîne de caractère soit valide avec ou sans espace entre les différentes sections.
    Voici ce que j'ai fait pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var pattern = '^\w+[\s]*[0-9]{3}[\s]*[0-9]{3}[\s]*[0-9]{3}$';

    Merci d'avance.

  2. #2
    Membre chevronné
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Par défaut
    Tu peux un peu simplifier ton écriture en remplaçant les séquences '[\s]*' par '\s*' et '[0-9]{3}' par '\d{3}', mais je suis plus circonspect sur '\w+' pour la ville. Je n'ai pas trouvé de specifications sur la constitution du RCS, cela semble être le SIREN précédé ou suivi de RCS et de la ville. Je n'ai rien vu sur le jeu de caractères autorisés pour les noms de ville. C'est pas terrible, mais sans plus d'infos j'essaierai ça : /^.+?\s*\d{3}\s*\d{3}\s*\d{3}$/
    La séquence '.+?' capture n'importe quel caractère ('.'), au moins un ('+') mais le moins possible ('?'), ce n'est pas génial.

    edit: en fait ce n'est pas bon du tout pour la ville. Je sèche. :/

    edit: bon, finalement : var rcsRE = /^([a-zéèëêàùô]+\s*[\/'-]?\s*)+\s*\d{3}\s*\d{3}\s*\d{3}$/i; va réconcilier les villes qui :
    - commencent par une lettre (insensible à la casse le 'i' à la fin), éventuellement accentuée (rajouter ou oter des lettres accentuées en fct des besoins)
    - peuvent être constituées de plusieurs mots, séparés par des tirets ou des barres obliques, ou pouvant contenir une apostrophe, éventuellement séparés par des espaces
    par contre, les villes ne pourront contenir plus d'un tiret, barre oblique ou apostrophe sans être séparé d'au moins une lettre, accentuée ou non.
    A noter qu'une ville peut se terminer par un tiret, barre oblique, etc.

    Ce qui ne va pas avec '\w' c'est que cela ne tient pas compte des lettres accentuées et surtout que cela inclus les chiffres, c'est à dire que dix chiffres consecutifs passent l'expression régulière.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 33
    Par défaut
    Ok merci pour la réponse. Je n'en demandais pas tant LOL. En tout cas ça me va pour le moment.

    J'ai une autre question. Existent ils des regexp standards concernant les villes, les noms de société (etc) ?


    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Pas vraiment ...
    Il faut se renseigner du coté des "normes" pour les noms de ville ou de société, mais en la matière je ne pense pas qu'il y ait vraiment de normalisation

    Pour les noms de villes, cela dépend du pays ...
    Par exemple au pays de galles il existe une ville qui porte ce nom : Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch
    ensuite en France il y a des tirets dans les noms de certaines villes ...

    Dans les noms de société certains comportent des chiffres des points des tirets, des lettres grecques ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 33
    Par défaut
    Ok merci

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 983
    Par défaut
    À titre d'information, les logiciels utilisés dans les chambres de commerce tolèrent plusieurs représentations d'une même commune (avec ou sans accents, ligatures, apostrophes, tirets) en majuscule et en minuscule. Je te conseille donc de faire de même pour la partie saisie. À coté de ça, rien ne t'empêche de te constituer une base avec le noms des villes comportant des chambres de commerce avec l'orthographe exacte et éventuellement une représentation en majuscules sans accents, sans tirets... pour pouvoir les lier facilement avec le nom de la commune saisie (voire développer un système de propositions).

    Pour ta pattern, je te conseille d'utiliser des classes de caractères exhaustives (voire même de ratisser large). C'est dans les noms propres qu'il y a le plus de moutons à cinq pattes en matière d'accentuation, notamment des accents que l'on ne trouvent pas dans les noms communs: L'Haÿ-Les-Roses. Par chance, le moteur de regex javascript semble être en mesure d'identifier la version majuscule d'un caractère accentué (ce qui n'a rien d'évident au premier abord), donc l'utilisation du modificateur i évitera de préciser les deux casses.

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    var pattern = /^[a-zàâäæ-ëîïôöù-üœ]+(?:[ '’-]+[a-zàâäæ-ëîïôöù-üœ]+)*[ \t]+\d{3}[ \t]*\d{3}[ \t]*\d{3}$/i;

    En javascript l'objet Regexp s'écrit entre slashes, ou en utilisant cette syntaxe var pattern = new RegExp('^[a-zàâä...\\d{3}$', 'i'); dans laquelle les antislashes doivent être doublés. Ce ne sont pas de simple strings.

    [0-9] peut effectivement être remplacé par \d qui en javascript est son strict synonyme (attention ce n'est pas le cas dans d'autres langages).

    [ \t] remplace avantageusement \s qui contient des caractères inutiles dans cette situation comme la tabulation verticale \v, le retour chariot \r, le saut de ligne \n et le saut de page. On peut aussi se cantonner à un simple espace, car on ne peut pas saisir de tabulation dans un champ texte sans changer de champ (sauf si on fait un copier/coller).

    NB: j'ai imposé au moins un espace entre le nom de la ville et le premier groupe de chiffres [ \t]+, si tu juges que ce n'est pas nécessaire, remplace le par [ \t]*.
    J'ai utilisé (?:[ '’-]+[a-zà... pour représenter les tirets, apostrophes, espaces dans le nom de la ville, ce qui permet de faire face à l'utilisateur qui te colle un espace après chaque apostrophe. Néanmoins, cette sous-pattern a le désavantage d'autoriser par exemple -- -'-'- '-'. Rien n'empêche d'être plus explicite en remplaçant cette sous-pattern par (?: *[ '’-] *[a-zà... qui n'autorise que les espaces surnuméraires.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Regexp d'amélioration typographique
    Par ellyric dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 22/04/2008, 16h17
  2. [ Eclipse 3 vs 2.1.2] Quelles sont les améliorations ?
    Par geegee dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 26/05/2004, 16h55
  3. [langage] [RegExp] Question d'expression régulière
    Par cloogy dans le forum Langage
    Réponses: 5
    Dernier message: 08/10/2003, 09h29
  4. regexp
    Par mathieu gérard dans le forum ASP
    Réponses: 4
    Dernier message: 02/10/2003, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo