Actions

Using regular expressions/fr: Difference between revisions

From LimeSurvey Manual

m (Text replace - "É" to "É")
(Created page with "Au début de cette section wiki, nous vous recommandons d'utiliser https://regex101.com/ pour tester/créer des expressions régulières. Vous pouvez également utiliser https...")
 
(124 intermediate revisions by 3 users not shown)
Line 2: Line 2:
__TOC__
__TOC__


Les expressions régulières doivent commencer et se terminer par une barre oblique ("/"). Vous pouvez trouver une bonne bibliothèque d'expressions régulières sur http://www.regexlib.net/. Ces modèles fonctionneront presque toujours s’ils sont entourés de barres obliques.


<div class="simplebox">La traduction de cette page n'est pas terminée.</div>
Pour tester vos expressions régulières vous pouvez utiliser ces testeurs d'expressions régulières: [https://regex101.com/ regex101] [https://extendsclass.com/regex-tester.html regex tester]


__TOC__
{{Remarque|Pour améliorer cette section wiki, nous vous demandons de bien vouloir ajouter votre ou vos expressions régulières testées avec succès afin de fournir une meilleure compréhension de cette fonctionnalité aux nouveaux utilisateurs (potentiels) de LimeSurvey.}}


=#Validation=
{{Alert|title=Attention|text= Veuillez noter que tous les exemples ci-dessous sont écrits sur une seule ligne !}}


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.
=Important : expressions régulières dans les conditions=


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.
Notez que lorsque vous utilisez des expressions régulières dans l'éditeur de conditions, n'incluez PAS la barre oblique de début et de fin.


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


[[File:LimeSurvey-2011-06-01-19-18.png]]
=Validation par email=


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.
Mise à jour (12/2018) : Étant donné que de nos jours, les noms de domaine ne peuvent pas seulement contenir des caractères spéciaux comme « ü », mais également utiliser plus de 3 caractères comme nom de domaine comme .''tech'' ou .''company'', l'expression régulière d'e-mail ci-dessous vérifie uniquement si « @ » et « ». existe dans l’adresse e-mail saisie.
<source lang="html">
/^.+?@.+?\..+$/
</source>


<div class="simplebox"><u>Attention</u>
Si vous souhaitez valider une adresse par ligne, dans un champ texte long multiligne :
<source lang="html">  
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\ n)?\n?)+)*)$/
</source>


Pour le contenu de la zone de saisie ''Validation'' soit évalué, il faut obligatoirement que l'utilisateur est saisi un caractère.
Dans cette expression régulière obsolète, le nom de domaine est limité à 3 caractères, ce qui ne couvre pas tous les domaines disponibles :
<source lang="html">
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
</source>


</div>
Codes postaux


=#Bref rappel=
== Codes postaux australiens: ==


<div class="simplebox"><u>Avertissements</u>
<source lang="html">/^[0-9]{4}/</source>


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


ou bien d'expliquer leurs fonctionnements.
<source lang="html">/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/</source>


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


Il y a également des sites qui traitent de ces sujets comme  http://www.regxlib.net/ (en anglais)
<source lang="html">/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/</source>


ou bien http://perl.enstimac.fr/DocFr/perlrequick.html (en français).</div>
== Codes postaux américains ==


L'expression régulière est un moyen puissant,flexible et efficace d'appliquer un traitement sur du texte.
<source lang="html">/^[0-9]{5}([- /]?[0-9]{4})?$/</source>


Gr&acirc;ce à une notation générale (motif, pattern), c'est une sorte de mini-langage de programmation qui permet de décrire
Pour que le code postal commence par zéro, utilisez :


et d'analyser le texte. Plusieurs notations existent.
<source lang="html">/^[0-9]{5}(?:-[0-9]{4})?$/</source>


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


{|
<source lang="html">/^[AZ][AZ]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i</source>
|   Métacaractère||   Signification||
|-
|   .||   n'importe quel caractère sauf \n||
|-
|   <nowiki>[</nowiki>  ]|| tous les caractères énumérés  ||   <nowiki>[</nowiki>abc]
|-
|   <nowiki>[</nowiki>~94~  ]|| tous les caractères sauf ceux qui sont énumérés  ||   <nowiki>[</nowiki>~94~abc]
|-
|   ~124~ || tous les caractères sauf ceux qui sont énumérés  ||   mot1~124~mot2~124~mot3
|-
|   - || intervalle  ||   a-z
|-
|
|}


{|
Notez que ceci n'est pas très exact et qu'une validation précise est beaucoup plus complexe. Par exemple, voir [https://stackoverflow.com/questions/164979/uk-postcode-regex-comprehensive StackOverflow answer] et [https://en.wikipedia.org/wiki/Talk:Postcodes_in_the_United_Kingdom#Regular_Expressions Wikipedia] pour plus informations.
|   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
|-
|
|}


{|
== Codes postaux français ==
|   Caractères||   Signification || Équivalence
|-
| \n || nouvelle ligne||
|-
| \r || retour à la ligne||
|-
| \t || tabulation||
|-
| \v || tabulation vertical||
|-
| \f || nouvelle page||
|-
|   \s ||   caractères d'espacement|| <nowiki>[</nowiki>\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 || tous les caractères sauf les chiffres||<nowiki>[</nowiki>~94~0-9]
|-
| \w || caractère constituant un mot||<nowiki>[</nowiki>0-9a-zA-Z_]
|-
| \W || tous les caractères ne constituant pas un mot||<nowiki>[</nowiki>~94~\w]
|-
| \xhh || caractère en hexadécimal(hh) ex: \x41 = A||
|-
|
|}


{|
<source lang="html">/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)| (^98[46-8]\d{2}$)/</source>
|   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 : /<nowiki>[</nowiki>a-z]/i est équivalent à /<nowiki>[</nowiki>a-zA-Z]/
L'expression ci-dessus est très précise et permettra de vérifier l'existence ou non du département français (deux premiers chiffres), y compris les départements et territoires d'outre-mer (DOM-TOM).


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


=#Quelques exemples=
=Numéros de téléphone=


<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):
==Numéros de téléphone aux États-Unis==


==Validation d'un code postal français==
<source lang="html">/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d {2}[- ] ?\d{4}$/</source>


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


Cette expression teste seulement de le format du code postal mais pas de sa validité.
<source lang="html">/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\ )\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/</source>


==Validation du numéro de département français==
Cette deuxième option correspondra à tous les numéros de téléphone canadiens et américains qui incluent des symboles autres que des chiffres, notamment :


  <nowiki>/^0[1-9]|[1-8][0-9]|9[0-8]|2A|2B$/</nowiki>
  <source lang="html">. ( ) - (espace)</source>


Cette expression teste seulement de le format du numéro du département mais pas de sa validité.
Cela vous permettra de faire correspondre les numéros de téléphone qui ressemblent à ci-dessous :
*(555)555 5555
*555.555.5555
*555 555 5555
*(555)-555-5555
* 555-555-5555
*555555555


==Validation d'un nombre==
==Numéros de téléphone australiens==


===Validation d'un nombre entier===
Les modèles suivants correspondent à tous les différents numéros de téléphone mobile et fixe australiens, y compris avec le préfixe de pays « +61 » :
*(02) 9123 6535
*03 1234-5345
*0412 345 678
*+ 61 2 3456 789


====nombre entier compris dans un intervalle défini (age, etc.) de 20 à 99====
Mais pas :
* 234 3450 234
*a234 534 3432
*134567
*123456789013


<nowiki>/([2-9][0-9])/</nowiki>
Les crochets, les espaces blancs et les tirets sont ignorés.


====nombre entier compris dans un intervalle défini (age, etc.) de 18 à 35====
Les versions « Très précises : » répertoriées ici correspondent aux quatre ou cinq premiers chiffres d'un numéro pour garantir qu'il s'agit de numéros australiens valides.


<nowiki>/(1[8-9]|2[0-9]|3[0-5])/</nowiki>
Le « Pas très précis : » ne correspond qu'au premier et au deuxième chiffres et peut donc autoriser des nombres incorrects.


====nombre entier compris dans un intervalle défini (age, etc.) de 19 à 65====
===Tous les numéros de téléphone australiens (mobile et fixe - indicatif régional requis)===


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


====nombre entier compris dans un intervalle de 1 à 99999====
<source lang="html">/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]? [0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[ 0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2 -7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9] [ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[ 0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/
</source>


<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>
Pas très précis :


C'est deux expressions produisent le même résultat.
<source lang="html">/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/</source>


====nombre entier compris dans plusieurs intervalles de 1 à 999, de 1.000 à 999.999====
===Tous les numéros de téléphone australiens (lignes fixes uniquement - indicatif régional requis)===


<nowiki>/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,1}$/</nowiki>
Tres précis:


====validation d'un score compris entre 1 et 10====
<source lang="html">/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0- 9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9 ]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7] |7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -] ?[0-9]))(?:[ -]?[0-9]){6}$/</source>


<nowiki>/^[1-9]{1}$|^10$/</nowiki>
Pas très précis :


====validation d'un score compris entre 1 et 100====
<source lang="html">/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/</source>


<nowiki>/^[1-9]?[0-9]{1}$|^100$/</nowiki>
===Numéros de téléphone fixes de la Nouvelle-Galles du Sud (indicatif régional facultatif)===


===validation d'un nombre décimal===
Tres précis:


Ce type de validation peut être utilisé dans le cas de prix, mesure
<source lang="html">/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[ 0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/</source>


====validation d'un nombre décimal====
Pas très précis :


<nowiki>/^([1][0-9][0-9]|[1-9][0-9]|[0-9])[[\.)[0-9][0-9])?$/</nowiki>
<source lang="html">/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/</source>


les nombres entre ayant une partie décimale optionnelle à deux chiffres
===Numéros de téléphone fixes victoriens et tasmaniens (indicatif régional facultatif)===


  <nowiki>/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</nowiki>
Tres précis:


===Monnaie===
<source lang="html">/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/</source>


====Euro (le signe Euro et les centimes sont optionnels)====
Pas très précis :


  <nowiki>/^\d+(\.(\d{3}]]?&euro;?$/</nowiki>
<source lang="html">/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/</source>


====Dollar US====
===Numéros de téléphone fixes du Queensland (indicatif régional facultatif)===


<nowiki>/^\$?\d+(\.(\d{2}))?$/</nowiki>
Tres précis:


Le signe dollar en début de saisie et les cents sont optionnels.
<source lang="html">/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -] ?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/</source>


====Prix en Franc Suisse====
Pas très précis :


C'est un nombre avec deux décimales  après la virgule dont le dernier chiffre est soit 5, soit 0.
<source lang="html">/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/</source>


<nowiki>/^(\d+)(\.\d(05)?)?$/</nowiki>
===Numéros de téléphone fixes d'Australie du Sud, du Territoire du Nord et d'Australie occidentale (indicatif régional facultatif)===


==Validation d'une date==
Tres précis:


====validation d'une date au format jj/mm/aaaa====
<source lang="html">/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9] [0-9])$/</source>


<nowiki>/^\d{1,2}\/\d{1,2}\/\d{4}$/</nowiki>
Pas très précis :


====validation d'une date au format jj/mm/aaaa du 20 ou 21éme siècle====
<source lang="html">/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/</source>


<nowiki>/^\d{1,2}\/\d{1,2}\/(19|20)\d{2}$/</nowiki> a tester
===Numéros de téléphone mobile australiens uniquement===


====validation d'un mois (1-12)====
Tres précis:


<nowiki>/^[0]?[1-9]$|^1[0-2]$/</nowiki>
<source lang="html">/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ? [7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(? : ?[0-9]){5}$/</source>


Cette expression permet de saisir le mois de janvier soit 1, soit 01.
Pas très précis :


==Validation d'une heure==
<source lang="html">/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/</source>


<nowiki>/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/</nowiki>
==Numéro de téléphone belge==
<source lang="html"> /^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2 }){2}$/</source>
==Numéro de téléphone portable belge==
<source lang="html"> /^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/</source>
==Numéro de téléphone français==
<source lang="html"> /^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/</source>
==Numéro de téléphone portable français==
<source lang="html"> /^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/</source>
==Numéro de téléphone luxembourgeois==
<source lang="html"> /^((\+|00\s?)352)?(\s?\d{2}){3,4}$/</source>
==Numéro de téléphone mobile luxembourgeois==
<source lang="html"> /^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/</source>
=Marques allemandes (avec plus ou moins en option)=
<source lang="html"> /^[1-6]{1}[\+|\-]?$/</source>


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


<nowiki>/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/</nowiki>
=Validation de l'âge=


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


<nowiki>/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/</nowiki>
Exemple : 20 à 99 ans
<source lang="html"> /([2-9][0-9])/</source>


Cette expression permet de valider un format d'heure HH:MM:SS où la partie des secondes est obligatoire ex : 11:32:53
Exemple : 18-35 ans
<source lang="html"> /(1[8-9]|2[0-9]|3[0-5])/</source>


==Validation d'une longueur de saisie==
Exemple : 19-65 ans
<source lang="html"> /^(1[8-9]|[2-5][0-9]|6[0-5])$/</source>


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 du numéro=  


<nowiki>/^.{3,}$/</nowiki>


ici la longueur minimum est de 3 caractères quelconques
==Nombres de 1 à 99999==
<source lang="html"> /^([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])$/</source>
<source lang="html"> /^[1-9][0-9]{0,4}$/ fait la même chose que ci-dessus mais devrait s'exécuter un peu plus vite</source>
==Nombres de 1 à 999, 1.000 à 999.999 à 999.999.999==
<source lang="html"> /^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/</source>
Accepte les nombres de 1 à 999, 1.000 à 999.999 à 999.999.999 mais
rejette les nombres comme 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333


====validation d'une longueur de saisie maximum====
==Validation des nombres avec décimale en option (pour le prix)==
Accepte les nombres de 0 à 199, avec 2 décimales en option :
<source lang="html"> /^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9]) ?$/</source>


<nowiki>/^.{3,}$/</nowiki>
==Validation des nombres avec séparateur de milliers==
Espace comme séparateur, pas de moins
<source lang="html"> /^(?!0)\d{1,3}(\ \d{3})*$/</source>
Point comme séparateur, moins autorisé
<source lang="html"> /^-?(?!0)\d{1,3}(\.\d{3})*$/</source>


ici la longueur maximum est de 3 caractères quelconques
Il force deux points décimaux et accepte les nombres de 1,00 à 999 999 999,00 avec une virgule facultative délimitant les milliers/millions 
y compris tous les éléments suivants : 1,00, 1 000,00, 12 345,67, 12345,02, 123 456 468,00, 1234566,00, 12. 3456789.00
mais pas 1 ,23h00, 12,3.4 ou 1234,43.04
<source lang="html"> /^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</source>
Similaire à ce qui précède : force deux points décimaux mais accepte un "0" avant le séparateur décimal ",".
<source lang="html"> /[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</source>


==Validation de texte==
Comme ci-dessus, mais les deux points décimaux sont facultatifs :
<source lang="html"> /^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2}) ?$/</source>


Actuellement, le type de question ''Multiples zones de texte court'' ne permet pas de contrôler le minimum ou le maximum de réponses.
==Mois (1-12)==


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.
Si vous souhaitez demander le mois de naissance d'une personne, vous pouvez valider la saisie comme suit :


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 :
<source lang="html">/^[0]*[1-9]$|^[0]*1[0-2]$/</source>


<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>
=Largeur minimale (fixée à 3 dans cet exemple)=


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>
  <source lang="html">/^.{3,}$/</source>


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>
=Devise=


===Limiter le nombre de mots===


L'expression ci-dessous permet d'écrire au minimum 1 mot et au maximum 200 mots.
==Monnaie américaine (signe dollar et cents en option)==


  <nowiki>/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/</nowiki>
  <source lang="html">/^\$?\d+(\.(\d{2}))?$/</source>


Vous pouvez varier le minimum et le maximum selon vos besoins en changeant {0,199} ( voir ci-dessus le tableau ''Quantificateur'')
Vérifiez l'utilisation des virgules :
<source lang="html"> /^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/</source>


==Validation d'un mot==
==Prix suisse==


==== mot dans une liste====
Un nombre avec deux nombres décimaux après la virgule dont le dernier est soit un 5, soit un 0 :


  <nowiki>/^(arbre|feuille|fleur){1}$/</nowiki>
  <source lang="html">/^(\d+)(\.\d(05)?)?$/</source>


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


====validation du mot dans une liste====
=Valider le score=


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


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


To test your regex you can [http://www.regxlib.net/RETester.aspx use this regex tester].
<source lang="html">/^[1-9]{1}$|^10$/</source>


''Please add successfully tested regular expressions!''
==1-100==
 
Examples (note that these are all one line):
 
=SPECIAL NOTE: Regular Expressions in Conditions=


Note that when using regular expressions in the condition editor, do NOT include the beginning and ending slash.
<source lang="html">/^[1-9]?[0-9]{1}$|^100$/</source>


=#Validation=


<nowiki>/(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})/</nowiki>
=Validation du texte=


The above regex will not validate email adresses with "+" - which is valid, and e.g. promoted by gmail. The below regex is slightly modified and allows "+":


<nowiki>/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/</nowiki>
Le [[Type de question - Texte court multiple|Type de question texte court multiple]] ne prend pas en charge les réponses minimales ou maximales pour le moment. Une solution consiste à utiliser un [[Type de question - Texte libre long|Type de question à texte libre long]] avec une expression régulière.


It is still far from perfect - but I think its better then the original (also because start-of-string and end-of-string anchors are added). Mind. This will allow e.g. abc+++defg@somemail.office.com. Ideally the regex should be modified to only allow one "+" charachter.
L'expression ci-dessous teste au moins un mot par ligne pendant au moins 3 lignes et pas plus de 10 lignes :


=Postcodes:=
<source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){2,10}/est</source>


==Australian Postcodes:==
Si vous le souhaitez, dites cinq mots par ligne, vous pouvez remplacer la première et la dernière étoile/astérisque par {4,} :


<nowiki>/^[0-9]{4}/</nowiki>
<source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.; :?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/est</source>


==Brazilian Postcodes:==
Si vous souhaitez un ou plusieurs mots par ligne (entre la ligne 1 et la ligne 5), vous pouvez modifier le contenu situé entre les dernières accolades en '''0,4''' (notez que vous utilisez 0 car vous correspondez déjà la première ligne).


  <nowiki>/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/</nowiki>
  <source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){0,4}/est</source>


==Canadian Postcodes:==
==Nombre de mots==
 
<nowiki>/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/</nowiki>
 
==US Postal Codes:==
 
<nowiki>/^[0-9]{5}([- /]?[0-9]{4})?$/</nowiki>
 
==UK Postcodes:==
 
<nowiki>/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i</nowiki>
 
Note that this is not very exact, and a more exact validation is much more complex.  For example, see [http://stackoverflow.com/questions/164979/uk-postcode-regex-comprehensive StackOverflow answer] and [http://en.wikipedia.org/wiki/Talk:Postcodes_in_the_United_Kingdom#Regular_Expressions Wikipedia] for more information.
 
=Phone Numbers=
 
==US Phone Number:==
 
<nowiki>/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/</nowiki>
 
or
 
<nowiki>/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/</nowiki>
 
This second option will match all phone Canadian and US phone numbers that include non-digit symbols including
 
<nowiki> . ( ) - (space)</nowiki>
 
This will allow you to match phone numbers which resemble below.
*(555)555 5555
*555.555.5555
*555 555 5555
*(555)-555-5555
*555-555-5555
*555555555
 
==Australian Phone Number:==
 
The following patterns match all various Australian mobile and landline phone numbers including with "+61" country prefix eg:
*(02) 9123 6535
*03 1234-5345
*0412 345 678
*+61 2 3456 789
 
But not:
* 234 3450 234
*a234 534 3432
*134567
*123456789013
 
Brackets, white space and hypens are ignored.
 
<nowiki>NOTE: The 'PRECICE' versions listed here match against the first four or five didgets in a number to ensure that they are valid Australian numbers.
 
The 'NOT VERY PRECISE' only match against the first and second didgit so may allow invaid numbers</nowiki>
 
===All Australian phone numbers (mobile and landline - area code required)===
 
<nowiki>VERY PRECISE
 
/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/
 
NOT VERY PRECISE
 
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/</nowiki>
 
===All Australian phone numbers (landlines only - area code required)===
 
<nowiki>VERY PRECISE
 
/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}$/
 
NOT VERY PRECISE
 
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/</nowiki>
 
===New South Wales landline phone numbers (area code optional)===
 
<nowiki>VERY PRECISE
 
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/
 
NOT VERY PRECISE
 
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/</nowiki>
 
===Victorian and Tasmanian landline phone numbers (area code optional)===
 
<nowiki>VERY PRECISE
 
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/
 
NOT VERY PRECISE
 
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/</nowiki>
 
===Queensland landline phone numbers (area code optional)===
 
<nowiki>VERY PRECISE
 
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/
 
NOT VERY PRECISE
 
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/</nowiki>
 
===South Australia, Northern Territory, Western Australia landline phone numbers (area code optional)===
 
<nowiki>VERY PRECISE
 
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/
 
NOT VERY PRECISE
 
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/</nowiki>
 
===Australian Mobile phone numbers only===
 
<nowiki>VERY PRECISE
 
/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/
 
NOT VERY PRECISE
 
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/</nowiki>
 
==Belgian phone number==
<nowiki>/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/</nowiki>
==Belgian mobile phone number==
<nowiki>/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/</nowiki>
==French phone number==
<nowiki>/^((\+|00)33\s?|0)[1-5](\s?\d{2}){4}$/</nowiki>
==French mobile phone number==
<nowiki>/^((\+|00)33\s?|0)[679](\s?\d{2}){4}$/</nowiki>
==Luxemburg phone number==
<nowiki>/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/</nowiki>
==Luxemburg mobile phone number==
<nowiki>/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/</nowiki>
=German marks (with optional plus or minus)=
<nowiki>/^[1-6]{1}[\+|\-]?$/</nowiki>
=Age Validation=
===Example: Age 20-99===
<nowiki>/([2-9][0-9])/</nowiki>
===Example: Age 18-35===
<nowiki>/(1[8-9]|2[0-9]|3[0-5])/</nowiki>
===Example: Age 19-65===
<nowiki>^(1[8-9]|[2-5][0-9]|6[0-5])$</nowiki>
=Number validation=
==Numbers from 1 to 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}$/ does the same as above but should run a little faster</nowiki>
==Numbers from 1 to 999, 1.000 to 999.999 to 999.999.999==
<nowiki>/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/
accepts numbers from 1 to 999, 1.000 to 999.999 to 999.999.999 but
rejects numbers like 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333</nowiki>
==Number validation with optionnal decimal (for price)==
<nowiki>/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/ accepts numbers from 0 to 199, with 2 decimal optionnal</nowiki>
<nowiki>
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
forces two decimal points
accepts numbers from 1.00 to 999,999,999.00 with an optional comma delimiting thousands/millions
including all of the following: 1.00, 1,000.00 , 12,345.67 , 12345,02 , 123,456,468.00 , 1234566.00 , 123456789.00
but not 1,23.00 , 12,3.4 or 1234,43.04</nowiki>
<nowiki>
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/ same as above but the two decimal points are optional</nowiki>
 
==Month (1-12)==
 
If you want to ask for the month a person was born you can validate the input as follows:
 
<nowiki>/^[0]*[1-9]$|^[0]*1[0-2]$/</nowiki>
 
=Minimum width (set to 3 in this example)=
 
<nowiki>/^.{3,}$/</nowiki>
 
=Currency=
 
==US currency (dollar sign and cents optional)==
 
<nowiki>/^\$?\d+(\.(\d{2}]]?$/</nowiki>
 
==Swiss price==
 
A number with two decimal numbers after the decimal point of which the last one is either a 5 or a 0:
 
<nowiki>/^(\d+)(\.\d(05)?)?$/</nowiki>
 
=Validate score=
 
==1-10==
 
<nowiki>/^[1-9]{1}$|^10$/</nowiki>
 
==1-100==


  <nowiki>/^[1-9]?[0-9]{1}$|^100$/</nowiki>
  Ce qui suit limite le nombre de mots autorisés à un minimum de 1 et un maximum de 200 :


=Text validation=
<source lang="html">/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/</source>


currently multiple short text doesn't support minimum or maximum answers. One way around this is to use a long free text type question with a regular expression.
Pour augmenter le minimum, modifiez la partie zéro de {0,199}.


The following test for at least one word per line for at least 3 lines and no more than 10 lines.
Pour augmenter ou diminuer le maximum, modifiez la partie "199" de {0,199}.


<nowiki>/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is</nowiki>
=Validation du temps=


If you wanted, say five words per line you could change the first and last star/asterisk to {4,} e.g.


<nowiki>/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is</nowiki>
Il existe plusieurs façons d'écrire des formats d'heure. Certaines des options possibles sont 12 heures ou 24 heures, avec ou sans secondes. Bien qu'il soit possible d'utiliser le [[Type de question - Date|type de question date]] (il peut également capturer le temps), vous pouvez utiliser le [[Type de question - Texte libre court|type de question à texte libre court]] avec l'un des les expressions régulières de validation ci-dessous.


If you wanted one or more words per line on between 1 and 5 lines, you can change the content of the last curley braces to {0,4} (note you use 0 because you're already matching the first line.
Les trois chaînes de validation suivantes testent sur 24 heures (par ordre d'apparition) sans secondes, avec des secondes facultatives enfin avec des secondes requises :


<nowiki>/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is</nowiki>
<source lang="html">/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/</source>


==Word count==
<source lang="html">/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/</source>


<nowiki>The following restricts the number of words allowed to a minimum of 1 and a maximum of 200
<source lang="html">/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/</source>


/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/</nowiki>
Les trois éléments suivants correspondent à une heure de 12 heures, comme ci-dessus avec les secondes, les secondes facultatives et les secondes requises :


<nowiki>To increase the minimum change the zero part of {0,199}
<source lang="html">/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0- 9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/</source>


To increase or decrease the maximum change the "199" part of {0,199}</nowiki>
<source lang="html">/^(?:00:[0-5][0-9](?::[0-5][0-9])? (?:am|AM)|(?:0[1-9] |1[01]):[0-5][0-9](?::[0-5][0-9])? (?:[ap]m|[AP]M)|12:[ 0-5][0-9](?::[0-5][0-9])? (?:pm|PM))$/</source>


=Time validation=
<source lang="html">/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01] ):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] : [0-5][0-9] (?:pm|PM))$/</source>


There are a number of ways of writing time formats. Some of the possible options are 12 hour or 24 hour, with seconds or without. Currently  (2009/04/06) LimeSurvey (v1.80plus) doesn't have a Time queston type so instead you can use "short free text" with one of the nine validation regular expressions below:
Les trois éléments suivants correspondent à une heure de 12 ou 24 heures comme ci-dessus avec les secondes, les secondes facultatives et les secondes requises :


<nowiki>The following three validation strings test for 24 hour time (in order of appearences) without seconds, with optional seconds lastly with seconds required.
<source lang="html">/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][ 0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9] |2[0-3]):[0-5][0-9])$/</source>


/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/
<source lang="html">/^(?:(?:00:[0-5][0-9](?[0-5][0-9])? (?:am|AM)|(?:0[1-9 ]|1[01]):[0-5][0-9](?[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0 -5][0-9](?[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]) :[0-5][0-9](?[0-5][0-9])?)$/</source>


/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/
<source lang="html">/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$/</source>


/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/~/pp<span style="color:pp~The following three match 12 hour time, as above with seconds, optional seconds and with seconds required
=États américains=


/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/


/^(?:00:[0-5][0-9](?::[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?::[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?::[0-5][0-9])? (?:pm|PM))$/
Pour valider un état, utilisez ce qui suit (exemple : Texas) : 
*TX en majuscules uniquement :<source lang="html"> /^(TX)$/</source>
*tx en minuscules uniquement :<source lang="html"> /^(tx)$/</source>
*TX majuscule ou minuscule :<source lang="html"> /^([T|t][X|x])$/</source>


/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))$/~/pp</span>pp~The following three match either 12 or 24 hour time as above with seconds, optional seconds and with seconds required


/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9])$/
=Filtre de grossièretés=


/^(?:(?:00:[0-5][0-9](?<center>[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?</center>[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?<center>[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9](?</center>[0-5][0-9])?)$/


/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$/</nowiki>
Pour filtrer les grossièretés d'une réponse :


=US States=
<source lang="html">/^(?i)((?!\bENTERPROFANITYICI\b).)*$(?-i)/</source>


To validate for one state use the following (example is Texas):
Remplacez "ENTERPROFANITYHERE" par votre gros mot.
*TX uppercase only = <nowiki>/^(TX)$/</nowiki>
*tx lowercase only = <nowiki>/^(tx)$/</nowiki>
*TX upper or lowercase = <nowiki>/^([T|t][X|x])$/</nowiki>


=Profanity Filter=
Le \b permettra de transmettre des mots tels que « assassinat » et « bonjour » si vous entrez « cul » ou « enfer » comme mot grossier. Cela fonctionne également si vous essayez d'omettre d'autres mots, noms, etc. dans les réponses.


To filter profanity words from an answer:


<nowiki>/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/</nowiki>
=Liens utiles=


Replace "ENTERPROFANITYHERE" with your bad word.


The \b will allow passing of words such as "assassination" & "hello" if you enter "ass" or "hell" as your profanity word. This also works if you are trying to omit other words, names etc. from answers.
Au début de cette section wiki, nous vous recommandons d'utiliser https://regex101.com/ pour tester/créer des expressions régulières. Vous pouvez également utiliser https://www.regextester.com/ pour créer des expressions au cas où vous n'êtes pas satisfait de la première option. Vous pouvez utiliser https://extendsclass.com/regex-tester.html pour visualiser les expressions régulières.

Latest revision as of 07:36, 4 October 2023

Les expressions régulières doivent commencer et se terminer par une barre oblique ("/"). Vous pouvez trouver une bonne bibliothèque d'expressions régulières sur http://www.regexlib.net/. Ces modèles fonctionneront presque toujours s’ils sont entourés de barres obliques.

Pour tester vos expressions régulières vous pouvez utiliser ces testeurs d'expressions régulières: regex101 regex tester

Template:Remarque

  Attention : Veuillez noter que tous les exemples ci-dessous sont écrits sur une seule ligne !



Important : expressions régulières dans les conditions

Notez que lorsque vous utilisez des expressions régulières dans l'éditeur de conditions, n'incluez PAS la barre oblique de début et de fin.


Validation par email

Mise à jour (12/2018) : Étant donné que de nos jours, les noms de domaine ne peuvent pas seulement contenir des caractères spéciaux comme « ü », mais également utiliser plus de 3 caractères comme nom de domaine comme .tech ou .company, l'expression régulière d'e-mail ci-dessous vérifie uniquement si « @ » et « ». existe dans l’adresse e-mail saisie.

 
/^.+?@.+?\..+$/

Si vous souhaitez valider une adresse par ligne, dans un champ texte long multiligne :

 
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\ n)?\n?)+)*)$/

Dans cette expression régulière obsolète, le nom de domaine est limité à 3 caractères, ce qui ne couvre pas tous les domaines disponibles :

 
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/

Codes postaux

Codes postaux australiens:

/^[0-9]{4}/

Codes postaux brésiliens

/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/

Codes postaux canadiens

/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/

Codes postaux américains

/^[0-9]{5}([- /]?[0-9]{4})?$/

Pour que le code postal commence par zéro, utilisez :

/^[0-9]{5}(?:-[0-9]{4})?$/

Codes postaux britanniques

/^[AZ][AZ]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i

Notez que ceci n'est pas très exact et qu'une validation précise est beaucoup plus complexe. Par exemple, voir StackOverflow answer et Wikipedia pour plus informations.

Codes postaux français

/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)| (^98[46-8]\d{2}$)/

L'expression ci-dessus est très précise et permettra de vérifier l'existence ou non du département français (deux premiers chiffres), y compris les départements et territoires d'outre-mer (DOM-TOM).


Numéros de téléphone

Numéros de téléphone aux États-Unis

/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d {2}[- ] ?\d{4}$/

ou

/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\ )\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/

Cette deuxième option correspondra à tous les numéros de téléphone canadiens et américains qui incluent des symboles autres que des chiffres, notamment :

. ( ) - (espace)

Cela vous permettra de faire correspondre les numéros de téléphone qui ressemblent à ci-dessous :

  • (555)555 5555
  • 555.555.5555
  • 555 555 5555
  • (555)-555-5555
  • 555-555-5555
  • 555555555

Numéros de téléphone australiens

Les modèles suivants correspondent à tous les différents numéros de téléphone mobile et fixe australiens, y compris avec le préfixe de pays « +61 » :

  • (02) 9123 6535
  • 03 1234-5345
  • 0412 345 678
  • + 61 2 3456 789

Mais pas :

  • 234 3450 234
  • a234 534 3432
  • 134567
  • 123456789013

Les crochets, les espaces blancs et les tirets sont ignorés.

Les versions « Très précises : » répertoriées ici correspondent aux quatre ou cinq premiers chiffres d'un numéro pour garantir qu'il s'agit de numéros australiens valides.

Le « Pas très précis : » ne correspond qu'au premier et au deuxième chiffres et peut donc autoriser des nombres incorrects.

Tous les numéros de téléphone australiens (mobile et fixe - indicatif régional requis)

Tres précis:

/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]? [0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[ 0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2 -7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9] [ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[ 0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/

Pas très précis :

/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/

Tous les numéros de téléphone australiens (lignes fixes uniquement - indicatif régional requis)

Tres précis:

/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0- 9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9 ]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7] |7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -] ?[0-9]))(?:[ -]?[0-9]){6}$/

Pas très précis :

/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/

Numéros de téléphone fixes de la Nouvelle-Galles du Sud (indicatif régional facultatif)

Tres précis:

/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[ 0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/

Pas très précis :

/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/

Numéros de téléphone fixes victoriens et tasmaniens (indicatif régional facultatif)

Tres précis:

/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/

Pas très précis :

/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/

Numéros de téléphone fixes du Queensland (indicatif régional facultatif)

Tres précis:

/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -] ?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/

Pas très précis :

/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/

Numéros de téléphone fixes d'Australie du Sud, du Territoire du Nord et d'Australie occidentale (indicatif régional facultatif)

Tres précis:

/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9] [0-9])$/

Pas très précis :

/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/

Numéros de téléphone mobile australiens uniquement

Tres précis:

/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ? [7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(? : ?[0-9]){5}$/

Pas très précis :

/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/

Numéro de téléphone belge

 /^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2 }){2}$/

Numéro de téléphone portable belge

 /^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/

Numéro de téléphone français

 /^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/

Numéro de téléphone portable français

 /^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/

Numéro de téléphone luxembourgeois

 /^((\+|00\s?)352)?(\s?\d{2}){3,4}$/

Numéro de téléphone mobile luxembourgeois

 /^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/

Marques allemandes (avec plus ou moins en option)

 /^[1-6]{1}[\+|\-]?$/


Validation de l'âge

Exemple : 20 à 99 ans

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

Exemple : 18-35 ans

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

Exemple : 19-65 ans

 /^(1[8-9]|[2-5][0-9]|6[0-5])$/


Validation du numéro

Nombres 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}$/ fait la même chose que ci-dessus mais devrait s'exécuter un peu plus vite

Nombres de 1 à 999, 1.000 à 999.999 à 999.999.999

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

Accepte les nombres de 1 à 999, 1.000 à 999.999 à 999.999.999 mais rejette les nombres comme 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333

Validation des nombres avec décimale en option (pour le prix)

Accepte les nombres de 0 à 199, avec 2 décimales en option :

 /^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9]) ?$/

Validation des nombres avec séparateur de milliers

Espace comme séparateur, pas de moins

 /^(?!0)\d{1,3}(\ \d{3})*$/

Point comme séparateur, moins autorisé

 /^-?(?!0)\d{1,3}(\.\d{3})*$/

Il force deux points décimaux et accepte les nombres de 1,00 à 999 999 999,00 avec une virgule facultative délimitant les milliers/millions  y compris tous les éléments suivants : 1,00, 1 000,00, 12 345,67, 12345,02, 123 456 468,00, 1234566,00, 12. 3456789.00 mais pas 1 ,23h00, 12,3.4 ou 1234,43.04

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

Similaire à ce qui précède : force deux points décimaux mais accepte un "0" avant le séparateur décimal ",".

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

Comme ci-dessus, mais les deux points décimaux sont facultatifs :

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

Mois (1-12)

Si vous souhaitez demander le mois de naissance d'une personne, vous pouvez valider la saisie comme suit :

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

Largeur minimale (fixée à 3 dans cet exemple)

/^.{3,}$/


Devise

Monnaie américaine (signe dollar et cents en option)

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

Vérifiez l'utilisation des virgules :

 /^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/

Prix suisse

Un nombre avec deux nombres décimaux après la virgule dont le dernier est soit un 5, soit un 0 :

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


Valider le score

1-10

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

1-100

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


Validation du texte

Le Type de question texte court multiple ne prend pas en charge les réponses minimales ou maximales pour le moment. Une solution consiste à utiliser un Type de question à texte libre long avec une expression régulière.

L'expression ci-dessous teste au moins un mot par ligne pendant au moins 3 lignes et pas plus de 10 lignes :

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){2,10}/est

Si vous le souhaitez, dites cinq mots par ligne, vous pouvez remplacer la première et la dernière étoile/astérisque par {4,} :

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.; :?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/est

Si vous souhaitez un ou plusieurs mots par ligne (entre la ligne 1 et la ligne 5), vous pouvez modifier le contenu situé entre les dernières accolades en 0,4 (notez que vous utilisez 0 car vous correspondez déjà la première ligne).

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){0,4}/est

Nombre de mots

Ce qui suit limite le nombre de mots autorisés à un minimum de 1 et un maximum de 200 :
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Pour augmenter le minimum, modifiez la partie zéro de {0,199}.

Pour augmenter ou diminuer le maximum, modifiez la partie "199" de {0,199}.

Validation du temps

Il existe plusieurs façons d'écrire des formats d'heure. Certaines des options possibles sont 12 heures ou 24 heures, avec ou sans secondes. Bien qu'il soit possible d'utiliser le type de question date (il peut également capturer le temps), vous pouvez utiliser le type de question à texte libre court avec l'un des les expressions régulières de validation ci-dessous.

Les trois chaînes de validation suivantes testent sur 24 heures (par ordre d'apparition) sans secondes, avec des secondes facultatives enfin avec des secondes requises :

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

Les trois éléments suivants correspondent à une heure de 12 heures, comme ci-dessus avec les secondes, les secondes facultatives et les secondes requises :

/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0- 9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/
/^(?:00:[0-5][0-9](?::[0-5][0-9])? (?:am|AM)|(?:0[1-9] |1[01]):[0-5][0-9](?::[0-5][0-9])? (?:[ap]m|[AP]M)|12:[ 0-5][0-9](?::[0-5][0-9])? (?:pm|PM))$/
/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01] ):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] : [0-5][0-9] (?:pm|PM))$/

Les trois éléments suivants correspondent à une heure de 12 ou 24 heures comme ci-dessus avec les secondes, les secondes facultatives et les secondes requises :

/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][ 0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9] |2[0-3]):[0-5][0-9])$/
/^(?:(?:00:[0-5][0-9](?[0-5][0-9])? (?:am|AM)|(?:0[1-9 ]|1[01]):[0-5][0-9](?[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0 -5][0-9](?[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]) :[0-5][0-9](?[0-5][0-9])?)$/
/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$/

États américains

Pour valider un état, utilisez ce qui suit (exemple : Texas) : 

  • TX en majuscules uniquement :
     /^(TX)$/
    
  • tx en minuscules uniquement :
     /^(tx)$/
    
  • TX majuscule ou minuscule :
     /^([T|t][X|x])$/
    


Filtre de grossièretés

Pour filtrer les grossièretés d'une réponse :

/^(?i)((?!\bENTERPROFANITYICI\b).)*$(?-i)/

Remplacez "ENTERPROFANITYHERE" par votre gros mot.

Le \b permettra de transmettre des mots tels que « assassinat » et « bonjour » si vous entrez « cul » ou « enfer » comme mot grossier. Cela fonctionne également si vous essayez d'omettre d'autres mots, noms, etc. dans les réponses.


Liens utiles

Au début de cette section wiki, nous vous recommandons d'utiliser https://regex101.com/ pour tester/créer des expressions régulières. Vous pouvez également utiliser https://www.regextester.com/ pour créer des expressions au cas où vous n'êtes pas satisfait de la première option. Vous pouvez utiliser https://extendsclass.com/regex-tester.html pour visualiser les expressions régulières.