Actions

Utilisation des expressions régulières: Difference between revisions

From LimeSurvey Manual

m (Text replace - "é" to "é")
 
m (Text replace - "É" to "É")
 
(7 intermediate revisions by the same user not shown)
Line 8: Line 8:
Lorsque vous définissez les attributs d'une question, vous devez indiquer son code, le texte de la question, le type de question,
Lorsque vous définissez les attributs d'une question, vous devez indiquer son code, le texte de la question, le type de question,


le nombre minimum et/ou maximum de caractères, etc.
le nombre minimum et/ou maximum de caractères, etc.


Cependant, il n'est pas possible définir tous les attributs de contrôle pouvant satisfaire les besoins des utilisateurs de LimeSurvey.
Cependant, il n'est pas possible définir tous les attributs de contrôle pouvant satisfaire les besoins des utilisateurs de LimeSurvey.


La zone de saisie ''Validation'' de l'écran d'édition d'une question joue ce rôle et permet d'ajouter des contrôles supplémentaires sur la réponse.
La zone de saisie ''Validation'' de l'écran d'édition d'une question joue ce rôle et permet d'ajouter des contrôles supplémentaires sur la réponse.


Ces contrôles se font grâce à des expressions régulières que l'on place dans la zone de saisie ''Validation''.
Ces contrôles se font grâce à des expressions régulières que l'on place dans la zone de saisie ''Validation''.


[[File:LimeSurvey-2011-06-01-19-18.png]]
[[File:LimeSurvey-2011-06-01-19-18.png]]
Line 24: Line 24:
<div class="simplebox"><u>Attention</u>
<div class="simplebox"><u>Attention</u>


Pour le contenu de la zone de saisie ''Validation'' soit évalué, il faut obligatoirement que l'utilisateur est saisi un caract&egrave;re.
Pour le contenu de la zone de saisie ''Validation'' soit évalué, il faut obligatoirement que l'utilisateur est saisi un caractère.


</div>
</div>
Line 32: Line 32:
<div class="simplebox"><u>Avertissements</u>
<div class="simplebox"><u>Avertissements</u>


L'objet de cette section n'est pas d'expliquer comment constituer des expressions réguli&egrave;res
L'objet de cette section n'est pas d'expliquer comment constituer des expressions régulières


ou bien d'expliquer leurs fonctionnements.
ou bien d'expliquer leurs fonctionnements.


De tr&egrave;s bons livres le font comme Ma&icirc;trise des expressions réguli&egrave;res de Jeffrey E. F. Friedl.
De très bons livres le font comme Maîtrise des expressions régulières de Jeffrey E. F. Friedl.


Il y a également des sites qui traitent de ces sujets comme  http://www.regxlib.net/ (en anglais)
Il y a également des sites qui traitent de ces sujets comme  http://www.regxlib.net/ (en anglais)


ou bien http://perl.enstimac.fr/DocFr/perlrequick.html (en fran&ccedil;ais).</div>
ou bien http://perl.enstimac.fr/DocFr/perlrequick.html (en français).</div>


L'expression réguli&egrave;re est un moyen puissant,flexible et efficace d'appliquer un traitement sur du texte.
L'expression régulière est un moyen puissant,flexible et efficace d'appliquer un traitement sur du texte.


Gr&acirc;ce &agrave; une notation générale (motif, pattern), c'est une sorte de mini-langage de programmation qui permet de décrire
Gr&acirc;ce à une notation générale (motif, pattern), c'est une sorte de mini-langage de programmation qui permet de décrire


et d'analyser le texte. Plusieurs notations existent.
et d'analyser le texte. Plusieurs notations existent.


Celle utilisée dans LimeSurvey est du type PERL et doivent commencer et se terminer par le caract&egrave;re slash ("/").
Celle utilisée dans LimeSurvey est du type PERL et doivent commencer et se terminer par le caractère slash ("/").


{|
{|
|   Métacaract&egrave;re||   Signification||
|   Métacaractère||   Signification||
|-
|-
|   .||   n'importe quel caract&egrave;re sauf \n||
|   .||   n'importe quel caractère sauf \n||
|-
|-
|   <nowiki>[</nowiki>  ]|| tous les caract&egrave;res énumérés  ||   <nowiki>[</nowiki>abc]
|   <nowiki>[</nowiki>  ]|| tous les caractères énumérés  ||   <nowiki>[</nowiki>abc]
|-
|-
|   <nowiki>[</nowiki>~94~  ]|| tous les caract&egrave;res sauf ceux qui sont énumérés  ||   <nowiki>[</nowiki>~94~abc]
|   <nowiki>[</nowiki>~94~  ]|| tous les caractères sauf ceux qui sont énumérés  ||   <nowiki>[</nowiki>~94~abc]
|-
|-
|   ~124~ || tous les caract&egrave;res sauf ceux qui sont énumérés  ||   mot1~124~mot2~124~mot3
|   ~124~ || tous les caractères sauf ceux qui sont énumérés  ||   mot1~124~mot2~124~mot3
|-
|-
|   - || intervalle  ||   a-z
|   - || intervalle  ||   a-z
Line 85: Line 85:


{|
{|
|   Caract&egrave;res||   Signification || &Eacute;quivalence
|   Caractères||   Signification || Équivalence
|-
|-
| \n || nouvelle ligne||
| \n || nouvelle ligne||
|-
|-
| \r || retour &agrave; la ligne||
| \r || retour à la ligne||
|-
|-
| \t || tabulation||
| \t || tabulation||
Line 97: Line 97:
| \f || nouvelle page||
| \f || nouvelle page||
|-
|-
|   \s ||   caract&egrave;res d'espacement|| <nowiki>[</nowiki>\n\r\t\f]
|   \s ||   caractères d'espacement|| <nowiki>[</nowiki>\n\r\t\f]
|-
|-
|   \S || tous les caract&egrave;res sauf les caract&egrave;res d'espacement|| <nowiki>[</nowiki>~94~\n\r\t\f]
|   \S || tous les caractères sauf les caractères d'espacement|| <nowiki>[</nowiki>~94~\n\r\t\f]
|-
|-
|   \d || les chiffres||<nowiki>[</nowiki>0-9]
|   \d || les chiffres||<nowiki>[</nowiki>0-9]
|-
|-
| \D || tous les caract&egrave;res sauf les chiffres||<nowiki>[</nowiki>~94~0-9]
| \D || tous les caractères sauf les chiffres||<nowiki>[</nowiki>~94~0-9]
|-
|-
| \w || caract&egrave;re constituant un mot||<nowiki>[</nowiki>0-9a-zA-Z_]
| \w || caractère constituant un mot||<nowiki>[</nowiki>0-9a-zA-Z_]
|-
|-
| \W || tous les caract&egrave;res ne constituant pas un mot||<nowiki>[</nowiki>~94~\w]
| \W || tous les caractères ne constituant pas un mot||<nowiki>[</nowiki>~94~\w]
|-
|-
| \xhh || caract&egrave;re en hexadécimal(hh) ex: \x41 = A||
| \xhh || caractère en hexadécimal(hh) ex: \x41 = A||
|-
|-
|
|
Line 126: Line 126:
|}
|}


Les modificateurs se mettent apr&egrave;s le dernier slash ex : /<nowiki>[</nowiki>a-z]/i est équivalent &agrave; /<nowiki>[</nowiki>a-zA-Z]/
Les modificateurs se mettent après le dernier slash ex : /<nowiki>[</nowiki>a-z]/i est équivalent à /<nowiki>[</nowiki>a-zA-Z]/


Vous pouvez tester vos expressions réguli&egrave;res sur http://www.spaweditor.com/scripts/regex/index.php
Vous pouvez tester vos expressions régulières sur http://www.spaweditor.com/scripts/regex/index.php


=#Quelques exemples=
=#Quelques exemples=


<div class="simplebox">''Vous pouvez ajouter des expressions réguli&egrave;res mais testées auparavant!''</div>
<div class="simplebox">''Vous pouvez ajouter des expressions régulières mais testées auparavant!''</div>


Exemples (notez qu'elles sont toutes sur une seule ligne):
Exemples (notez qu'elles sont toutes sur une seule ligne):


==Validation d'un code postal fran&ccedil;ais==
==Validation d'un code postal français==


  <nowiki>/^0[1-9]|[1-8][0-9]|9[0-8]|2A|2B[0-9]{3}$/</nowiki>
  <nowiki>/^0[1-9]|[1-8][0-9]|9[0-8]|2A|2B[0-9]{3}$/</nowiki>
Line 142: Line 142:
Cette expression teste seulement de le format du code postal mais pas de sa validité.
Cette expression teste seulement de le format du code postal mais pas de sa validité.


==Validation du numéro de département fran&ccedil;ais==
==Validation du numéro de département français==


  <nowiki>/^0[1-9]|[1-8][0-9]|9[0-8]|2A|2B$/</nowiki>
  <nowiki>/^0[1-9]|[1-8][0-9]|9[0-8]|2A|2B$/</nowiki>
Line 152: Line 152:
===Validation d'un nombre entier===
===Validation d'un nombre entier===


====nombre entier compris dans un intervalle défini (age, etc.) de 20 &agrave; 99====
====nombre entier compris dans un intervalle défini (age, etc.) de 20 à 99====


  <nowiki>/([2-9][0-9])/</nowiki>
  <nowiki>/([2-9][0-9])/</nowiki>


====nombre entier compris dans un intervalle défini (age, etc.) de 18 &agrave; 35====
====nombre entier compris dans un intervalle défini (age, etc.) de 18 à 35====


  <nowiki>/(1[8-9]|2[0-9]|3[0-5])/</nowiki>
  <nowiki>/(1[8-9]|2[0-9]|3[0-5])/</nowiki>


====nombre entier compris dans un intervalle défini (age, etc.) de 19 &agrave; 65====
====nombre entier compris dans un intervalle défini (age, etc.) de 19 à 65====


  <nowiki><div class="simplebox">(1[8-9]|[2-5][0-9]|6[0-5])$</nowiki>
  <nowiki><div class="simplebox">(1[8-9]|[2-5][0-9]|6[0-5])$</nowiki>


====nombre entier compris dans un intervalle de 1 &agrave; 99999====
====nombre entier compris dans un intervalle de 1 à 99999====


  <nowiki>/^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9])$/</nowiki>  <nowiki>/^[1-9][0-9]{0,4}$/</nowiki>
  <nowiki>/^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9])$/</nowiki>  <nowiki>/^[1-9][0-9]{0,4}$/</nowiki>


C'est deux expressions produisent le m&ecirc;me résultat.
C'est deux expressions produisent le même résultat.


====nombre entier compris dans plusieurs intervalles de 1 &agrave; 999, de 1.000 &agrave; 999.999====
====nombre entier compris dans plusieurs intervalles de 1 à 999, de 1.000 à 999.999====


  <nowiki>/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,1}$/</nowiki>
  <nowiki>/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,1}$/</nowiki>
Line 184: Line 184:
===validation d'un nombre décimal===
===validation d'un nombre décimal===


Ce type de validation peut &ecirc;tre utilisé dans le cas de prix, mesure
Ce type de validation peut être utilisé dans le cas de prix, mesure


====validation d'un nombre décimal====
====validation d'un nombre décimal====
Line 190: Line 190:
  <nowiki>/^([1][0-9][0-9]|[1-9][0-9]|[0-9])[[\.)[0-9][0-9])?$/</nowiki>
  <nowiki>/^([1][0-9][0-9]|[1-9][0-9]|[0-9])[[\.)[0-9][0-9])?$/</nowiki>


  les nombres entre ayant une partie décimale optionnelle &agrave; deux chiffres
  les nombres entre ayant une partie décimale optionnelle à deux chiffres


   <nowiki>/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</nowiki>
   <nowiki>/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</nowiki>
Line 208: Line 208:
====Prix en Franc Suisse====
====Prix en Franc Suisse====


C'est un nombre avec deux décimales  apr&egrave;s la virgule dont le dernier chiffre est soit 5, soit 0.
C'est un nombre avec deux décimales  après la virgule dont le dernier chiffre est soit 5, soit 0.


  <nowiki>/^(\d+)(\.\d(05)?)?$/</nowiki>
  <nowiki>/^(\d+)(\.\d(05)?)?$/</nowiki>
Line 218: Line 218:
  <nowiki>/^\d{1,2}\/\d{1,2}\/\d{4}$/</nowiki>
  <nowiki>/^\d{1,2}\/\d{1,2}\/\d{4}$/</nowiki>


====validation d'une date au format jj/mm/aaaa du 20 ou 21éme si&egrave;cle====
====validation d'une date au format jj/mm/aaaa du 20 ou 21éme siècle====


  <nowiki>/^\d{1,2}\/\d{1,2}\/(19|20)\d{2}$/</nowiki> a tester
  <nowiki>/^\d{1,2}\/\d{1,2}\/(19|20)\d{2}$/</nowiki> a tester
Line 236: Line 236:
  <nowiki>/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/</nowiki>
  <nowiki>/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/</nowiki>


Cette expression permet de valider un format d'heure HH:MM:SS o&ugrave; la partie de secondes est optionnelle ex : 11:32:53 ou bien 11:32
Cette expression permet de valider un format d'heure HH:MM:SS la partie de secondes est optionnelle ex : 11:32:53 ou bien 11:32


  <nowiki>/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/</nowiki>
  <nowiki>/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/</nowiki>


Cette expression permet de valider un format d'heure HH:MM:SS o&ugrave; la partie des secondes est obligatoire ex : 11:32:53
Cette expression permet de valider un format d'heure HH:MM:SS la partie des secondes est obligatoire ex : 11:32:53


==Validation d'une longueur de saisie==
==Validation d'une longueur de saisie==


Pour certain type de question, LimeSurvey propose dans les param&egrave;tres avancés ce type de contr&ocirc;le.
Pour certain type de question, LimeSurvey propose dans les paramètres avancés ce type de contrôle.


====validation d'une longueur de saisie minimum====
====validation d'une longueur de saisie minimum====
Line 250: Line 250:
  <nowiki>/^.{3,}$/</nowiki>
  <nowiki>/^.{3,}$/</nowiki>


ici la longueur minimum est de 3 caract&egrave;res quelconques
ici la longueur minimum est de 3 caractères quelconques


====validation d'une longueur de saisie maximum====
====validation d'une longueur de saisie maximum====
Line 256: Line 256:
  <nowiki>/^.{3,}$/</nowiki>
  <nowiki>/^.{3,}$/</nowiki>


ici la longueur maximum est de 3 caract&egrave;res quelconques
ici la longueur maximum est de 3 caractères quelconques


==Validation de texte==
==Validation de texte==


Actuellement, le type de question ''Multiples zones de texte court'' ne permet pas de contr&ocirc;ler le minimum ou le maximum de réponses.
Actuellement, le type de question ''Multiples zones de texte court'' ne permet pas de contrôler le minimum ou le maximum de réponses.


Une des mani&egrave;res d'y parvenir est d'utiliser le type question ''Zone de texte long'' sur laquelle on appliquera une expression réguli&egrave;re.
Une des manières d'y parvenir est d'utiliser le type question ''Zone de texte long'' sur laquelle on appliquera une expression régulière.


L'expression ci-dessous vérifie qu'il y a au moins un mot par ligne et qu'il y a au moins trois lignes mais pas plus de 10 lignes :
L'expression ci-dessous vérifie qu'il y a au moins un mot par ligne et qu'il y a au moins trois lignes mais pas plus de 10 lignes :
Line 268: Line 268:
  <nowiki>/(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)){2,10}/is</nowiki>
  <nowiki>/(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)){2,10}/is</nowiki>


Si vous voulez vérifier qu'il y a au moins 5 mots par ligne, vous devez changer le premier et le dernier caract&egrave;re étoile (*) par {4,}
Si vous voulez vérifier qu'il y a au moins 5 mots par ligne, vous devez changer le premier et le dernier caractère étoile (*) par {4,}


  <nowiki>/(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+){4,})){2,10}/is</nowiki>
  <nowiki>/(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+){4,})){2,10}/is</nowiki>


Si voulez 1 ou plusieurs mots par ligne et de 1 &agrave; 5 lignes, vous pouvez changer les valeurs du quantificateur {0,4}.
Si voulez 1 ou plusieurs mots par ligne et de 1 à 5 lignes, vous pouvez changer les valeurs du quantificateur {0,4}.


  <nowiki>/(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)){0,4}/is</nowiki>
  <nowiki>/(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)){0,4}/is</nowiki>

Latest revision as of 16:12, 11 June 2013

La traduction de cette page n'est pas terminée.

#Validation

Lorsque vous définissez les attributs d'une question, vous devez indiquer son code, le texte de la question, le type de question,

le nombre minimum et/ou maximum de caractères, etc.

Cependant, il n'est pas possible définir tous les attributs de contrôle pouvant satisfaire les besoins des utilisateurs de LimeSurvey.

La zone de saisie Validation de l'écran d'édition d'une question joue ce rôle et permet d'ajouter des contrôles supplémentaires sur la réponse.

Ces contrôles se font grâce à des expressions régulières que l'on place dans la zone de saisie Validation.

Dans la situation présentée ci-dessus, la réponse sera considérée comme valide si d'une part elle est composée uniquement de lettres

en majuscule et d'autre part si le nombre de lettres est compris entre 1 et 10.

Attention

Pour le contenu de la zone de saisie Validation soit évalué, il faut obligatoirement que l'utilisateur est saisi un caractère.

#Bref rappel

Avertissements

L'objet de cette section n'est pas d'expliquer comment constituer des expressions régulières

ou bien d'expliquer leurs fonctionnements.

De très bons livres le font comme Maîtrise des expressions régulières de Jeffrey E. F. Friedl.

Il y a également des sites qui traitent de ces sujets comme  http://www.regxlib.net/ (en anglais)

ou bien http://perl.enstimac.fr/DocFr/perlrequick.html (en français).

L'expression régulière est un moyen puissant,flexible et efficace d'appliquer un traitement sur du texte.

Grâce à une notation générale (motif, pattern), c'est une sorte de mini-langage de programmation qui permet de décrire

et d'analyser le texte. Plusieurs notations existent.

Celle utilisée dans LimeSurvey est du type PERL et doivent commencer et se terminer par le caractère slash ("/").

  Métacaractère   Signification
  .   n'importe quel caractère sauf \n
  [  ] tous les caractères énumérés     [abc]
  [~94~  ] tous les caractères sauf ceux qui sont énumérés     [~94~abc]
  ~124~ tous les caractères sauf ceux qui sont énumérés     mot1~124~mot2~124~mot3
  - intervalle     a-z
  Quantificateur   Signification   Exemple
  *   zéro ou plus   A* = zéro ou plus de lettre A
  + 1 ou plus       A+ = une lettre A ou plus
  ? 0 ou 1           A? = pas de lettre A ou une seule lettre A
{n} n fois exactement A{3} = trois lettres A
{min,} minimum min fois et plus A{3,} trois lettres A ou plus
{min,max} minimum min et maximum max  fois A{3,7} trois lettres A au minimum et au maximum 7 lettres A
  Caractères   Signification Équivalence
\n nouvelle ligne
\r retour à la ligne
\t tabulation
\v tabulation vertical
\f nouvelle page
  \s   caractères d'espacement [\n\r\t\f]
  \S tous les caractères sauf les caractères d'espacement [~94~\n\r\t\f]
  \d les chiffres [0-9]
\D tous les caractères sauf les chiffres [~94~0-9]
\w caractère constituant un mot [0-9a-zA-Z_]
\W tous les caractères ne constituant pas un mot [~94~\w]
\xhh caractère en hexadécimal(hh) ex: \x41 = A
  Modificateur   Signification
i ignore la casse
x le point reconnait aussi \n
m mode multi lignes

Les modificateurs se mettent après le dernier slash ex : /[a-z]/i est équivalent à /[a-zA-Z]/

Vous pouvez tester vos expressions régulières sur http://www.spaweditor.com/scripts/regex/index.php

#Quelques exemples

Vous pouvez ajouter des expressions régulières mais testées auparavant!

Exemples (notez qu'elles sont toutes sur une seule ligne):

Validation d'un code postal français

/^0[1-9]|[1-8][0-9]|9[0-8]|2A|2B[0-9]{3}$/

Cette expression teste seulement de le format du code postal mais pas de sa validité.

Validation du numéro de département français

/^0[1-9]|[1-8][0-9]|9[0-8]|2A|2B$/

Cette expression teste seulement de le format du numéro du département mais pas de sa validité.

Validation d'un nombre

Validation d'un nombre entier

nombre entier compris dans un intervalle défini (age, etc.) de 20 à 99

/([2-9][0-9])/

nombre entier compris dans un intervalle défini (age, etc.) de 18 à 35

/(1[8-9]|2[0-9]|3[0-5])/

nombre entier compris dans un intervalle défini (age, etc.) de 19 à 65

<div class="simplebox">(1[8-9]|[2-5][0-9]|6[0-5])$

nombre entier compris dans un intervalle de 1 à 99999

/^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9])$/  /^[1-9][0-9]{0,4}$/

C'est deux expressions produisent le même résultat.

nombre entier compris dans plusieurs intervalles de 1 à 999, de 1.000 à 999.999

/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,1}$/

validation d'un score compris entre 1 et 10

/^[1-9]{1}$|^10$/

validation d'un score compris entre 1 et 100

/^[1-9]?[0-9]{1}$|^100$/

validation d'un nombre décimal

Ce type de validation peut être utilisé dans le cas de prix, mesure

validation d'un nombre décimal

/^([1][0-9][0-9]|[1-9][0-9]|[0-9])[[\.)[0-9][0-9])?$/
les nombres entre ayant une partie décimale optionnelle à deux chiffres
 /^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
===Monnaie===
====Euro (le signe Euro et les centimes sont optionnels)====
 /^\d+(\.(\d{3}]]?€?$/

Dollar US

/^\$?\d+(\.(\d{2}))?$/

Le signe dollar en début de saisie et les cents sont optionnels.

Prix en Franc Suisse

C'est un nombre avec deux décimales  après la virgule dont le dernier chiffre est soit 5, soit 0.

/^(\d+)(\.\d(05)?)?$/

Validation d'une date

validation d'une date au format jj/mm/aaaa

/^\d{1,2}\/\d{1,2}\/\d{4}$/

validation d'une date au format jj/mm/aaaa du 20 ou 21éme siècle

/^\d{1,2}\/\d{1,2}\/(19|20)\d{2}$/ a tester

validation d'un mois (1-12)

/^[0]?[1-9]$|^1[0-2]$/

Cette expression permet de saisir le mois de janvier soit 1, soit 01.

Validation d'une heure

/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/

cette expression permet de valider un format d'heure HH:MM ex : 11:32

/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/

Cette expression permet de valider un format d'heure HH:MM:SS où la partie de secondes est optionnelle ex : 11:32:53 ou bien 11:32

/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/

Cette expression permet de valider un format d'heure HH:MM:SS où la partie des secondes est obligatoire ex : 11:32:53

Validation d'une longueur de saisie

Pour certain type de question, LimeSurvey propose dans les paramètres avancés ce type de contrôle.

validation d'une longueur de saisie minimum

/^.{3,}$/

ici la longueur minimum est de 3 caractères quelconques

validation d'une longueur de saisie maximum

/^.{3,}$/

ici la longueur maximum est de 3 caractères quelconques

Validation de texte

Actuellement, le type de question Multiples zones de texte court ne permet pas de contrôler le minimum ou le maximum de réponses.

Une des manières d'y parvenir est d'utiliser le type question Zone de texte long sur laquelle on appliquera une expression régulière.

L'expression ci-dessous vérifie qu'il y a au moins un mot par ligne et qu'il y a au moins trois lignes mais pas plus de 10 lignes :

/(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)){2,10}/is

Si vous voulez vérifier qu'il y a au moins 5 mots par ligne, vous devez changer le premier et le dernier caractère étoile (*) par {4,}

/(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+){4,})){2,10}/is

Si voulez 1 ou plusieurs mots par ligne et de 1 à 5 lignes, vous pouvez changer les valeurs du quantificateur {0,4}.

/(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[</div>,.;:?!& \n\r]+(?: [<div class="simplebox">,.;:?!& \n\r]+)*)){0,4}/is

Limiter le nombre de mots

L'expression ci-dessous permet d'écrire au minimum 1 mot et au maximum 200 mots.

/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/

Vous pouvez varier le minimum et le maximum selon vos besoins en changeant {0,199} ( voir ci-dessus le tableau Quantificateur)

Validation d'un mot

mot dans une liste

/^(arbre|feuille|fleur){1}$/

Le mot saisie doit correspondre exactement (minuscule) au mot dans la liste.

validation du mot dans une liste

/^(arbre|feuille|fleur){1}$/i

Ici, on ne tient pas compte des minuscules et des majuscules : Les mots suivants Arbre,arbre, ARBRE, ArBrE, etc. sont tous valides.