Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Utilisation des Regex

  • Nenesse
  • Nenesse's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
5 years 3 months ago #178846 by Nenesse
Utilisation des Regex was created by Nenesse
Hello,

je tatonne sur l'utilisation des expressions regex pour contrôler des entrées saisies d'une question à multiples zones de texte court.

Je ne sais pas où mettre l'expression :unsure:

Est-ce que je peux la mettre dans les filtres conditionnels comme sur ma capture?



j'ai l'impression que ça ne fonctionne pas quand je prévisualise le questionnaire, je peux passer à la page suivante, mais pas dans le cas d'une case vide par exemple.

Ou alors je dois la mettre dans Fixer les conditions?

J'ai bien lu cette doc , mais c'est pas plus clair dans ma tête :silly:

Merci de votre aide
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 3 months ago #178863 by DenisChenu
Replied by DenisChenu on topic Utilisation des Regex
C'est bien dans les paramètres avancés de la question , dans la zone «Équation de validation des textes» ou «Équation de validation de la question»

regexMatch("/^taregex?$/",ContactClient_SQ003) and regexMatch("/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})?$/",ContactClient_SQ005)

La doc devrait être encore valide en dehors de la partie {QUESTION_HELP} … mais cela apparaitra.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The following user(s) said Thank You: Nenesse
The topic has been locked.
  • Nenesse
  • Nenesse's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
5 years 3 months ago #178865 by Nenesse
Replied by Nenesse on topic Utilisation des Regex
Merci pour ton retour Denis.

On est d'accord que tu donnes juste un exemple, pas forcément lié à mon contexte ou ma capture plus haut?

Si tu m'indiques ce que je dois mettre précisément, alors je ne comprends pas la partie /^taregex?$/ dans regexMatch("/^taregex?$/",ContactClient_SQ003).

Si je me base sur ce lien , alors ce que je devrais mettre sur cette capture en bas à droite


dans Equation de validation de la question, devrait plus ressembler à ça:

regexMatch("/^((\+|00)33\s?|0)[1-5](\s?\d{2}){4}$/",ContactClient_SQ003) and regexMatch("/^((\+|00)33\s?|0)[679](\s?\d{2}){4}$/",ContactClient_SQ004) and regexMatch("/^.+?@.+?\..+$/",ContactClient_SQ005)

pour correspondre à mon cas de figure:


J'ai bien compris ou je suis à côté de la plaque? :blush:
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 3 months ago #178878 by DenisChenu
Replied by DenisChenu on topic Utilisation des Regex

Nenesse wrote:
J'ai bien compris ou je suis à côté de la plaque? :blush:

Non, non, c'est bien cela .


J'ai pas vérifié la regexp et pas recopié celle qui apparaissait en image.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
  • Nenesse
  • Nenesse's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
5 years 3 months ago #178881 by Nenesse
Replied by Nenesse on topic Utilisation des Regex
Bon, c'est déjà ça! merci

Par contre, j'ai vu qu'il y avait, en plus de l'Équation de validation de question, Subquestion validation equation.

Du coup, j'ai mis ça dans cette deuxième option, Subquestion validation equation: jusque là, tout va bien, ça fonctionne.


Par contre, je suis en train de m'arracher les cheveux à essayer, en plus des regex, de faire en sorte sur sur les 5 sous-questions, seules 3 sont obligatoires, ce qui donne un truc comme ça:


Avec, pour rappel, les sous-questions suivantes:


Pour faire simple, le nom, le numéro de fixe et l'email sont obligatoires, mais pas le prénom ni le numéro de mobile, tout en conservant la vérification des entrées avec les regex.

J'ai spécifié que le minimum de réponses à apporter est 3.

En gros, si j'ai bien compris que !empty(ContactClient_SQ001) signifie que la case ne peut pas être vide, je n'ai pas compris comment lui dire que le prénom et le numéro de mobile sont des sous-questions non-obligatoire :S
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 3 months ago - 5 years 3 months ago #178883 by DenisChenu
Replied by DenisChenu on topic Utilisation des Regex
Alors …
Supprimer les commentaires puisque les expressions n'ont pas de commentaires
Code:
!is_empty(ContactClient_SQ001) /* Nom obligatoire */
and
(!is_empty(ContactClient_SQ003) and regexMatch("/^((\+|00)33\s?|0)[1-5](\s?\d{2}){4}$/",ContactClient_SQ003) ) /* Téléphone obligatoire */
and
(is_empty(ContactClient_SQ004) or regexMatch("/^((\+|00)33\s?|0)[679](\s?\d{2}){4}$/",ContactClient_SQ004) ) /* mobile non obligatoire */
and 
(!is_empty(ContactClient_SQ005) and regexMatch("/^.+?@.+?\..+$/",ContactClient_SQ005)) /* email obligatoire */

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
Last edit: 5 years 3 months ago by DenisChenu.
The following user(s) said Thank You: Nenesse
The topic has been locked.
  • Nenesse
  • Nenesse's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
5 years 3 months ago #178884 by Nenesse
Replied by Nenesse on topic Utilisation des Regex
Je dois vraiment être nul...

Quoi que je fasse, j'ai l'impression que comme la question est obligatoire, TOUTES les sous-questions doivent être remplies même si je précise l'Équation de validation de question ci-dessous, c'est possible ça?
Code:
!is_empty(ContactClient_SQ001)
and
is_empty(ContactClient_SQ002)
and
(!is_empty(ContactClient_SQ003) and regexMatch("/^((\+|00)33\s?|0)[1-5](\s?\d{2}){4}$/",ContactClient_SQ003))
and
(is_empty(ContactClient_SQ004) or regexMatch("/^((\+|00)33\s?|0)[679](\s?\d{2}){4}$/",ContactClient_SQ004))
and 
(!is_empty(ContactClient_SQ005) and regexMatch("/^.+?@.+?\..+$/",ContactClient_SQ005))

D'ailleurs, même si je remplis TOUTES les sous-questions, je ne peux pas passer à la suite car "vous n'avez pas répondu correctement à une ou plusieurs questions"...
The topic has been locked.
  • Nenesse
  • Nenesse's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
5 years 3 months ago - 5 years 3 months ago #178885 by Nenesse
Replied by Nenesse on topic Utilisation des Regex
Bon, au final c'est bien ça,

avec mes sous-questions obligatoires et optionnelles, il NE faut PAS que la question soit obligatoire pour que ça fonctionne...

Merci pour ton aide Denis

EDIT: pour info, j'ai mis les conditions dans Subquestion validation equation, et ça marche bien comme je le souhaite ;)
Last edit: 5 years 3 months ago by Nenesse. Reason: ajout info supplémentaire
The topic has been locked.
  • Nenesse
  • Nenesse's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
5 years 3 months ago - 5 years 3 months ago #178897 by Nenesse
Replied by Nenesse on topic Utilisation des Regex
Vu que l'on était sur les RegEx, et que j'ai cherché un peu même si finalement, quand on comprend comment ça marche, ce n'est pas compliqué, est-ce qu'il serait possible de rajouter dans la documentation les codes postaux français à 5 chiffres?
  • Simple (5 chiffres sans vérification de pertinence):
    /^\d{5}$/
    ou
    /^[0-9]{5}$/
  • Avancé (5 chiffres + vérification de pertinence + DOM-TOM):
    /(^[0-8][0-9][0-9]{3}$)|(^9[0-5][0-9]{3}$)|(^97[1-6][0-9]{2}$)|(^98[46-8][0-9]{2}$)/
    ou
    /(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/

Les expressions ont été vérifiées sur ce site .

[hr]

De la même manière, pour mettre à jour la documentation RegEx, il faudrait améliorer la partie téléphone.
En France, les préfix pour la téléphonie fixe sont 01 02 03 04 05 et 09 (VOIP box internet). Les mobiles eux, n'ont que le 06 et 07 en préfix. Ce qui donnerait:
  • Pour les fixes:
    /^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/
  • Pour les mobiles:
    /^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/

Merci
Last edit: 5 years 3 months ago by Nenesse. Reason: Ajout d'information
The topic has been locked.
  • DenisChenu
  • DenisChenu's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 years 3 months ago #178908 by DenisChenu
Replied by DenisChenu on topic Utilisation des Regex
Salut,

1. Oui: question onbligatoire revient à ajouter !is_empty sur toutes les lignes. Ce n'est pas ce que tu souhaite
2. La manuel est un wiki éditable avec to compte : même utilisateur/mot de passe.

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand , plugin development .
I don't answer to private message.
The topic has been locked.
  • Nenesse
  • Nenesse's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
5 years 3 months ago #178923 by Nenesse
Replied by Nenesse on topic Utilisation des Regex
C'est fait pour la documentation ;)

Encore merci pour ton aide.
The topic has been locked.
Moderators: Nickko

Lime-years ahead

Online-surveys for every purse and purpose