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 :

RegEx avec accents, espaces et caractères de séparation [RegExp]


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 49
    Points : 38
    Points
    38
    Par défaut RegEx avec accents, espaces et caractères de séparation
    Bonjour à tous,

    Je tente de faire un RegEx en JavaScript pour vérifier la saisie d'un input de type text.
    Je souhaite accepter tous les caractères alphabétiques (avec ou sans accents), numériques, et les caractères de séparation suivant : le tiret, le tiret bas, le point et l'espace.

    Voici mon code:
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script type="text/javascript">
    	function verifString()
    	{
    		var string = "ëx vœúx erât adî-piscîng sãdic_scïng";
    		var monRegEx = /^[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ._-\s]{5,60}$/;
    		if(verifDescrip.exec(descrip) == null){ alert("saisie invalide"); }
    	}
    </script>

    Ce qui me pose problème c'est d'accepter dans la même chaîne plusieurs types de caractères de séparations différents (des espaces, des tirets et des underscores dans cet exemple).

    Et comment dois-je faire pour ne pas avoir deux caractères de séparations qui se suivent? (exemples : 'Jean--Louis', 'Jean_-Louis' ou 'Jean Louis').

    Cordialement.

  2. #2
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut


    mets le - à la fin

    sinon c'est un range
    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 !

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Points : 209
    Points
    209
    Par défaut
    Salut,

    Voici une expression qui devrait convenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var reg = new RegExp("^((?:\\w|[\\-_ ](?![\\-_ ])|[\\u00C0\\u00C1\\u00C2\\u00C3\\u00C4\\u00C5\\u00C6\\u00C7\\u00C8\\u00C9\\u00CA\\u00CB\\u00CC\\u00CD\\u00CE\\u00CF\\u00D0\\u00D1\\u00D2\\u00D3\\u00D4\\u00D5\\u00D6\\u00D8\\u00D9\\u00DA\\u00DB\\u00DC\\u00DD\\u00DF\\u00E0\\u00E1\\u00E2\\u00E3\\u00E4\\u00E5\\u00E6\\u00E7\\u00E8\\u00E9\\u00EA\\u00EB\\u00EC\\u00ED\\u00EE\\u00EF\\u00F0\\u00F1\\u00F2\\u00F3\\u00F4\\u00F5\\u00F6\\u00F9\\u00FA\\u00FB\\u00FC\\u00FD\\u00FF\\u0153])+)$", "i");
    La partie en bleue concerne les lettres majuscules et minuscules.

    La partie en rouge concerne les caractères accentués (majuscules et minuscules).

    La partie en vert autorise les caractères de séparation (- ou _ ou espace), mais n'autorise pas qu'ils se suivent.

    A+

  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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    pas besoin de se compliquer autant l'existence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function verifString()
    	{
    		var string1 = "ëx vœúx erât /adî-piscîng sãdic_scïng";
    		var string2 = "ëx vœúx erât adî-piscîng sãdic_scïng";
    		var monRegEx = /^[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ._\s-]{5,60}$/;
    		alert("string1 saisie " + (string1.match(monRegEx)?"valide":"invalide") ); 
    		alert("string2 saisie " + (string2.match(monRegEx)?"valide":"invalide") ); 
    	}
     
    verifString()
    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
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Tiens, c'est une question qui revient souvent en ce moment, les accents dans les regexp… Ça mérite sa place dans la FAQ
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  6. #6
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    Par défaut
    Citation Envoyé par Watilin Voir le message
    Tiens, c'est une question qui revient souvent en ce moment, les accents dans les regexp… Ça mérite sa place dans la FAQ
    Et bien poste la (la Q/R) dans le forum Contribuez
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Points : 209
    Points
    209
    Par défaut
    Ben dès que tu veux faire des vérifications un peu "complexes", les regexp deviennent vite compliquées...

    Et puis, concernant ma regexp, je ne vois pas ce qu'il y a de si compliqué... La chaine avec l'ensemble des codes unicode est peut-être un peu verbeuse, mais ça évite les problèmes d'encodage (un é dans un fichier encodé en UTF-8 ou en ISO-8859-1 ne donnera pas le même résultat alors que sous cette forme, ça ne pose pas de problème).

    Après, dans la demande de General_Batton, il était précisé que la succession de deux caractères de séparation était interdite, ce qui explique ma partie en vert.

  8. #8
    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 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    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 !

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    Hé bien mazette!

    Merci à tous pour vos nombreuses réponses!

    Je me suis un peu étouffé sur le _\s-] à la place du _-\s] comme quoi JS c'est assez précis comme langage... après cette modification ma RegEx fonctionne.

    Merci aussi à BaBeuH pour sa technique pour les caractères de séparations, je vais étudier un peu la partie verte, ça risque de me servir souvent.

  10. #10
    Membre actif
    Homme Profil pro
    Responsable déploiement systèmes
    Inscrit en
    Juin 2015
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement systèmes
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 120
    Points : 246
    Points
    246
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    pas besoin de se compliquer autant l'existence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function verifString()
    	{
    		var string1 = "ëx vœúx erât /adî-piscîng sãdic_scïng";
    		var string2 = "ëx vœúx erât adî-piscîng sãdic_scïng";
    		var monRegEx = /^[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ._\s-]{5,60}$/;
    		alert("string1 saisie " + (string1.match(monRegEx)?"valide":"invalide") ); 
    		alert("string2 saisie " + (string2.match(monRegEx)?"valide":"invalide") ); 
    	}
     
    verifString()
    Bonjour @SpaceFrog,

    avec la superbe syntaxe de "tonRegEx" (ligne 5), tous les problèmes d'accents et de ponctuation que j'avais sur des phrases et avec lesquelles je luttais depuis des jours sont résolus... Alors MERCI BEAUCOUP pour CE PARTAGE !!!
    "L'erreur est humaine mais un véritable désastre nécessite un ordinateur." de William Henry, dit Bill Gates

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

Discussions similaires

  1. [RegEx] Expression rationnelle avec accents, espace et apostrophe.
    Par psychoBob dans le forum Langage
    Réponses: 12
    Dernier message: 24/04/2006, 15h21
  2. Réponses: 3
    Dernier message: 16/03/2006, 16h44
  3. [SQL]Caractères avec accents
    Par New dans le forum Oracle
    Réponses: 1
    Dernier message: 24/10/2005, 09h49
  4. [Regex] Vérifier un texte avec accents
    Par supermanu dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 09/10/2005, 15h29
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

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