mercredi 23 juillet 2014

10 RegExp pour masteriser Google Formulaire

11 commentaires
Il y a quelques temps déjà, presque un an en fait, Google à introduit dans les Google Formulaires la validation des données. Cette option permet de vérifier avant validation, que la valeur saisie correspond à l'information attendue.

Google propose de base de vérifier par exemple si la saisie est bien un email. Le plus intéressant cependant est de pouvoir utiliser les expressions régulières, aussi appelées RegExp, pour contrôler encore plus précisément les informations saisies.



10 expressions régulières pour Google Forms
Pour accéder à l'option de validation des données il faut cliquer, dans la question de type texte, sur "Paramètre Avancés"(1) ensuite choisir "Expression régulières"(2) puis "Correspondance"(3). Ensuite saisissez l'expression régulière et un texte d'aide si nécessaire.


Vous allez pouvoir créer un champ:
  1. E-mail, le formulaire sera valide si un email est entré.
  2. Numéro de téléphone, il faudra saisir un numéro de téléphone à 10 chiffres.
  3. Numéro de téléphone international, il faudra saisir un numéro de téléphone commençant par +33....
  4. Code produit, pratique si vous voulez publier un formulaire permettant de suivre les retours d'un produit et être sur que le code entré respecte votre formatage.
  5. Nom en majuscule, saisie de texte tout en majuscule.
  6. Mot de passe, petite astuce pour ne permettre la validation du formulaire qu'en connaissant ce code. Ce n'est pas une vraie procédure de sécurité, c'est une astuce.
  7. Date entre deux dates, si vous voulez par exemple demander la saisie d'une date d'un rendez vous en deux dates.
  8. Pseudo, récupération d'une information saisie par l'utilisateur respectant une certaine structure
  9. Prix en euros, un prix en euros
  10. Domaine en .fr, vérifier si le domaine entré est bien en .fr
Voici les expressions régulière :
  1. C'est une fonctionnalité de base de Google formulaire !
  2. [0-9]{10}
  3. ^\+33([0-9]{9})
  4. ^[A-Z]{2}\-[0-9]{5}\-[A-Z]{1}
  5. [A-Z\ ]*
  6. Le code directement
  7. (^[0-2][0-9]|^3[0-1])\/12\/2014
  8. [a-zA-Z0-9_-]{3,12}
  9. [0-9]{1,12}€|[0-9]{1,12},[0-9]{2}€
  10. ([\-\.:\/a-z0-9])+(\.fr)
Vous voulez tester, rendez vous sur ce formulaire.

Les déclinaisons sont infinies, attention cependant à la complexité. Pour créer la votre vous pouvez lancer une recherche Google avec le mot "regexp" ou "expression regulière" dedans.

EDIT :
Pour avoir un numéro de téléphone international ou non avec des tirets comme séparateur, 00-00-00-00-00 ou +330-00-00-00-00 :
(\+[0-9]{1})?[0-9]{1}[0-9]{1}\S[0-9]{2}\S[0-9]{2}\S[0-9]{2}\S[0-9]{2}(\S[0-9]{1})?([0-9]{1})?(\S[0-9]{1})?([0-9]{1})?

Merci à Christophe !

11 Responses so far

  1. Salut Stéphane,
    Je recherche désespérément à faire un regex évolutif en fonction de la date du jour.

    Je m'explique sur celui-ci (^[0-2][0-9]|^3[0-1])\/12\/2014
    Je voudrais que la date max évolue à +de 12mois en fonction de la date d'aujourd'hui.

    En gros si aujourd'hui je remplis mon formulaire, je ne devrais pas pouvoir mettre une date ultérieure au 2 novembre 2015

    Les infos sont pas faciles à trouver sur le sujet, j'ai trouvé beaucoup d'exemple mais jamais une doc complète sur l'ensemble de la syntaxe utilisable...

    Merci pour ton aide

  2. Bonjour et merci pour votre tuto ,

    J'essaye de créer une expression de ce type : abcde#1234.
    en sachant que le "abcde" peut aller de 3 à 15 lettres et que "1234" sera toujours 4 chiffres.

    J'ai essayé plusieurs choses mais ça ne marche pas ...
    ([a-zA-Z]{3-15})^\#([0-9]{4}) par exemple ...

    Pourriez vous m'aider ?

    Merci d'avance,

    MV

  3. Thomas D. says:

    Bonjour et merci beaucoup pour ce tuto qui m'a bien aidé à faire ma première regexp sur Google !

    Je voudrais partager mon but et la solution que j'ai trouvé. Il s'agissait de regrouper les horaires de bénévolat d'une association dans un Google Sheet. J'ai pour cela mis un formulaire en place avec un champ texte pour récupérer le nombre d'heure passées par jour, en y applicant une validation d'un nombre inférieur à 24.

    Hors, après quelques essais je me suis rendu compte que les chiffres à virgules étaient convertis en chiffres à point lors de l'enregistrement du nombre dans Google Sheet (ex.: 12,5 -> 12.5), ce qui devenait problématique lors de calculs à postériori, d'heures totales par bénévole ou par type de tâches par exemple.

    J'ai donc préféré mettre en place une expression régulière répondant aux règles suivantes :
    - nombres de 0 à 23,99
    - nombres entiers ou à deux décimales
    - virgule pour seul séparateur décimale

    Le résultat est le suivant :
    ([0-9]|1[0-9]|2[0-3])([,][0-9]{1,2})?

    J'espère qu'il sera utile pour d'autres !

    Merci ST3PH,

    Thomas

  4. Thomas D. says:

    Pour répondre à Matthieu Vernant, votre expression comporte 4 erreurs :
    - {3,15} et non pas {3-15}
    - la présence d'un ^ qui indique ce que vous attendez obligatoirement en début de la chaîne de données n'a aucune utilité dans votre regexp
    - pour forcer la présence d'un caractère, utilisez les crochets comme suit : [#]

    Ce qui donne :
    [a-zA-Z]{3,15}[#][0-9]{4}

    En espérant que vous ayez trouvé la solution bien avant, bon courage !

    Thomas

  5. Unknown says:

    Je cherche à avoir un numéro de téléphone espace comme séparateur "00 00 00 00 00". Quelqu'un pour m'aider ?

  6. Ceci est à la fois une question et une réponse @Unknown :
    J'utilise :
    ^0([0-9]{9})
    pour un numéro de téléphone commençant par 0, saisi sans espace (affichage avec espace voir plus bas), mais le formulaire me laisse saisir plus de 10 chiffres...?! Mes souvenirs en RegExp sont très rouillés...

    Autre souci, comment les afficher dans le tableur en gardant le premier "0". Même en choisissant un format texte, le tableur créé avec les réponses ?

    Ma solution, mais est-ce qu'il y a mieux : Format/Nombres/Autres formats/Format de nombres personnalisé et on tape "00 00 00 00 00"

  7. Suite ...

    Soucis : Apparemment le format appliqué à une colonne entière ne s'applique pas automatiquement aux nouvelles saisies... Il faut ré-appliquer le format à la colonne (ou à la case), que ce soit par la méthode indiqué (il se souvient du format créé) ou par copie et collage spécial du format...

    Curieux non ? Bug ?

  8. st3ph says:

    Bonjour

    Por la regexp ça me semble bon pourtant étrange.

    Pour le formatage des colonnes je ne serai dire mais dans ce cas ce serait lié au nouveau formulaire.

    Stéphane

  9. J'ai envoyé une remarque a google pour le formattage du tableau créé.

    Merci.

  10. st3ph says:

    A voir le retour ????

Leave a Reply