Actions

Using regular expressions/fr: Difference between revisions

From LimeSurvey Manual

(Created page with "== Codes postaux brésiliens ==")
(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...")
 
(112 intermediate revisions by 3 users not shown)
Line 2: Line 2:
__TOC__
__TOC__


<div class="mw-translate-fuzzy">
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">  
Pour le contenu de la zone de saisie ''Validation'' soit évalué, il faut obligatoirement que l'utilisateur est saisi un caractère.
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\ n)?\n?)+)*)$/
 
</source>
</div>
 
=#Bref rappel=
 
<div class="simplebox"><u>Avertissements</u>
 
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).</div>
 
L'expression régulière est un moyen puissant,flexible et efficace d'appliquer un traitement sur du texte.
 
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.
 
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||
|-
|   <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
|-
|
|}
 
{|
|   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|| <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||
|-
|
|}
 
{|
|   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]/
 
Vous pouvez tester vos expressions régulières sur http://www.spaweditor.com/scripts/regex/index.php
 
=#Quelques exemples=
 
<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):
 
==Validation d'un code postal français==
 
<nowiki>/^0[1-9]|[1-8][0-9]|9[0-8]|2A|2B[0-9]{3}$/</nowiki>
 
Cette expression teste seulement de le format du code postal mais pas de sa validité.
 
==Validation du numéro de département français==
 
<nowiki>/^0[1-9]|[1-8][0-9]|9[0-8]|2A|2B$/</nowiki>
 
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====
 
<nowiki>/([2-9][0-9])/</nowiki>
 
====nombre entier compris dans un intervalle défini (age, etc.) de 18 à 35====
 
<nowiki>/(1[8-9]|2[0-9]|3[0-5])/</nowiki>
 
====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>
 
====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>
 
C'est deux expressions produisent le même résultat.
 
====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>
 
====validation d'un score compris entre 1 et 10====
 
<nowiki>/^[1-9]{1}$|^10$/</nowiki>
 
====validation d'un score compris entre 1 et 100====
 
<nowiki>/^[1-9]?[0-9]{1}$|^100$/</nowiki>
 
===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====
 
<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 à deux chiffres
 
  <nowiki>/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</nowiki>
 
===Monnaie===
 
====Euro (le signe Euro et les centimes sont optionnels)====
 
  <nowiki>/^\d+(\.(\d{3}]]?&euro;?$/</nowiki>
 
====Dollar US====
 
<nowiki>/^\$?\d+(\.(\d{2}))?$/</nowiki>
 
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.
 
<nowiki>/^(\d+)(\.\d(05)?)?$/</nowiki>
 
==Validation d'une date==
 
====validation d'une date au format jj/mm/aaaa====
 
<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ècle====
 
<nowiki>/^\d{1,2}\/\d{1,2}\/(19|20)\d{2}$/</nowiki> a tester
 
====validation d'un mois (1-12)====
 
<nowiki>/^[0]?[1-9]$|^1[0-2]$/</nowiki>
 
Cette expression permet de saisir le mois de janvier soit 1, soit 01.
 
==Validation d'une heure==
 
<nowiki>/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/</nowiki>
 
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>
 
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>
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">  
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====
 
<nowiki>/^.{3,}$/</nowiki>
 
ici la longueur minimum est de 3 caractères quelconques
 
====validation d'une longueur de saisie maximum====
 
<nowiki>/^.{3,}$/</nowiki>
 
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 :
 
<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è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>
 
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>
 
===Limiter le nombre de mots===
 
L'expression ci-dessous permet d'écrire au minimum 1 mot et au maximum 200 mots.
 
<nowiki>/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/</nowiki>
 
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====
 
<nowiki>/^(arbre|feuille|fleur){1}$/</nowiki>
 
Le mot saisie doit correspondre exactement (minuscule) au mot dans la liste.
 
====validation du mot dans une liste====
 
<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.
</div>
 
<div class="mw-translate-fuzzy">
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]
</div>
 
{{Note|To improve this wiki section, we kindly ask you to add your successfully tested regular expression(s) to provide a better understanding of this feature to the new LimeSurvey (potential) users.}}
 
{{Alert|title=Attention|text= Please note that all the below examples are written on one line!}}
 
 
=Important: Regular Expressions in conditions=
 
 
Note that when using regular expressions in the condition editor, do NOT include the beginning and ending slash.
 
 
<div class="mw-translate-fuzzy">
=#Validation=
</div>
 
 
Update (12/2018): Since these days domain names cannot only hold special characters like “ü” but also use more than 3 characters as domain name like .''tech'' or .''company'', the below email regex only checks if “@” and “.” exists within the entered email address.
<source lang="html">
/^.+?@.+?\..+$/
</source>
At this outdated regex the domain name is limited to 3 characters which doesn't cover all available domains:
<source lang="html">
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
</source>
</source>
Line 342: Line 45:
  <source lang="html">/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/</source>
  <source lang="html">/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/</source>


==Canadian postcodes==
== Codes postaux canadiens ==


  <source lang="html">/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/</source>
  <source lang="html">/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/</source>


==US postal codes==
== Codes postaux américains ==


  <source lang="html">/^[0-9]{5}([- /]?[0-9]{4})?$/</source>
  <source lang="html">/^[0-9]{5}([- /]?[0-9]{4})?$/</source>


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


<source lang="html">/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i</source>
<source lang="html">/^[0-9]{5}(?:-[0-9]{4})?$/</source>


Note that this is not very exact, and a more exact validation is much more complex. For example, see [https://stackoverflow.com/questions/164979/uk-postcode-regex-comprehensive StackOverflow answer] and [https://en.wikipedia.org/wiki/Talk:Postcodes_in_the_United_Kingdom#Regular_Expressions Wikipedia] for more information.
== Codes postaux britanniques ==


==French postcodes==
<source lang="html">/^[AZ][AZ]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i</source>


<source lang="html">/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/</source>
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.


The above expression is very precise and it will check whether or not the French Department exists (first two digits), including overseas Departments and overseas Territories (DOM-TOM).
== Codes postaux français ==


<source lang="html">/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)| (^98[46-8]\d{2}$)/</source>


=Phone numbers=
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).




==US phone numbers==
=Numéros de téléphone=


<source lang="html">/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/</source>


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


<source lang="html">/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/</source>
<source lang="html">/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d {2}[- ] ?\d{4}$/</source>


This second option will match all phone Canadian and US phone numbers that include non-digit symbols including:
ou


  <source lang="html"> . ( ) - (space)</source>
  <source lang="html">/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\ )\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/</source>


This will allow you to match phone numbers which resemble below:
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 :
 
<source lang="html">. ( ) - (espace)</source>
 
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
*555 555 5555
*(555)-555-5555
*(555)-555-5555
*555-555-5555
* 555-555-5555
*555555555
*555555555


==Australian phone numbers==
==Numéros de téléphone australiens==


The following patterns match all various Australian mobile and landline phone numbers including with "+61" country prefix:
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
*(02) 9123 6535
*03 1234-5345
*03 1234-5345
*0412 345 678
*0412 345 678
*+61 2 3456 789
*+ 61 2 3456 789


But not:
Mais pas :
* 234 3450 234
* 234 3450 234
*a234 534 3432
*a234 534 3432
Line 400: Line 107:
*123456789013
*123456789013


Brackets, white space and hypens are ignored.
Les crochets, les espaces blancs et les tirets sont ignorés.


The 'Very precise:' versions listed here match against the first four or five digits in a number to ensure that they are valid Australian numbers.
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.


The 'Not very precise:' only match against the first and second digit so may allow invaid numbers.
Le « Pas très précis : » ne correspond qu'au premier et au deuxième chiffres et peut donc autoriser des nombres incorrects.


===All Australian phone numbers (mobile and landline - area code required)===
===Tous les numéros de téléphone australiens (mobile et fixe - indicatif régional requis)===


Very precise:
Tres précis:


<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 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>
</source>


Not very precise:
Pas très précis :


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


===All Australian phone numbers (landlines only - area code required)===
===Tous les numéros de téléphone australiens (lignes fixes uniquement - indicatif régional requis)===


Very precise:
Tres précis:


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


Not very precise:
Pas très précis :


<source lang="html">/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/</source>
<source lang="html">/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/</source>


===New South Wales landline phone numbers (area code optional)===
===Numéros de téléphone fixes de la Nouvelle-Galles du Sud (indicatif régional facultatif)===


Very precise:
Tres précis:


<source lang="html">/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[ 0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/</source>


Not very precise:
Pas très précis :


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


===Victorian and Tasmanian landline phone numbers (area code optional)===
===Numéros de téléphone fixes victoriens et tasmaniens (indicatif régional facultatif)===


Very precise:
Tres précis:


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


Not very precise:
Pas très précis :


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


===Queensland landline phone numbers (area code optional)===
===Numéros de téléphone fixes du Queensland (indicatif régional facultatif)===


Very precise:
Tres précis:


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


Not very precise:
Pas très précis :


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


===South Australia, Northern Territory, Western Australia landline phone numbers (area code optional)===
===Numéros de téléphone fixes d'Australie du Sud, du Territoire du Nord et d'Australie occidentale (indicatif régional facultatif)===


Very precise:
Tres précis:


<source lang="html">/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/</source>
<source lang="html">/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9] [0-9])$/</source>


Not very precise:
Pas très précis :


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


===Australian mobile phone numbers only===
===Numéros de téléphone mobile australiens uniquement===


Very precise:
Tres précis:


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


Not very precise:
Pas très précis :


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


==Belgian phone number==
==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>
<source lang="html"> /^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2 }){2}$/</source>  
==Belgian mobile phone number==
==Numéro de téléphone portable belge==
<source lang="html">/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/</source>
<source lang="html"> /^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/</source>  
==French phone number==
==Numéro de téléphone français==
<source lang="html">/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/</source>
<source lang="html"> /^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/</source>  
==French mobile phone number==
==Numéro de téléphone portable français==
<source lang="html">/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/</source>
<source lang="html"> /^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/</source>  
==Luxemburg phone number==
==Numéro de téléphone luxembourgeois==
<source lang="html">/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/</source>
<source lang="html"> /^((\+|00\s?)352)?(\s?\d{2}){3,4}$/</source>  
==Luxemburg mobile phone number==
==Numéro de téléphone mobile luxembourgeois==
<source lang="html">/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/</source>
<source lang="html"> /^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/</source>  
=German marks (with optional plus or minus)=
=Marques allemandes (avec plus ou moins en option)=
<source lang="html">/^[1-6]{1}[\+|\-]?$/</source>
<source lang="html"> /^[1-6]{1}[\+|\-]?$/</source>




=Age validation=
=Validation de l'âge=




Example: Age 20-99
Exemple : 20 à 99 ans
<source lang="html">/([2-9][0-9])/</source>
<source lang="html"> /([2-9][0-9])/</source>


Example: Age 18-35
Exemple : 18-35 ans
<source lang="html">/(1[8-9]|2[0-9]|3[0-5])/</source>
<source lang="html"> /(1[8-9]|2[0-9]|3[0-5])/</source>


Example: Age 19-65
Exemple : 19-65 ans
<source lang="html">/^(1[8-9]|[2-5][0-9]|6[0-5])$/</source>
<source lang="html"> /^(1[8-9]|[2-5][0-9]|6[0-5])$/</source>




=Number validation=  
=Validation du numéro=  




==Numbers from 1 to 99999==
==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]|[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}$/ does the same as above but should run a little faster</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>  
==Numbers from 1 to 999, 1.000 to 999.999 to 999.999.999==
==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>
<source lang="html"> /^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/</source>  
Accepts numbers from 1 to 999, 1.000 to 999.999 to 999.999.999 but
Accepte les nombres de 1 à 999, 1.000 à 999.999 à 999.999.999 mais
rejects numbers like 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333
rejette les nombres comme 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333


==Number validation with optional decimal (for price)==
==Validation des nombres avec décimale en option (pour le prix)==
Accepts numbers from 0 to 199, with 2 decimal optional:
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>
<source lang="html"> /^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9]) ?$/</source>


It forces two decimal points and accepts numbers from 1.00 to 999,999,999.00 with an optional comma delimiting thousands/millions
==Validation des nombres avec séparateur de milliers==
including all of the following: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00
Espace comme séparateur, pas de moins
but not 1,23.00, 12,3.4 or 1234,43.04
<source lang="html"> /^(?!0)\d{1,3}(\ \d{3})*$/</source>
<source lang="html">/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</source>
Point comme séparateur, moins autorisé
<source lang="html"> /^-?(?!0)\d{1,3}(\.\d{3})*$/</source>
 
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>  
   
   
Similar to the above: Forces two decimal points but accepts a "0" before decimal separator ",".
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>
<source lang="html"> /[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/</source>


Same as above, but the two decimal points are optional:
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>
<source lang="html"> /^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2}) ?$/</source>


==Month (1-12)==
==Mois (1-12)==


If you want to ask for the month a person was born you can validate the input as follows:
Si vous souhaitez demander le mois de naissance d'une personne, vous pouvez valider la saisie comme suit :


  <source lang="html">/^[0]*[1-9]$|^[0]*1[0-2]$/</source>
  <source lang="html">/^[0]*[1-9]$|^[0]*1[0-2]$/</source>


 
=Largeur minimale (fixée à 3 dans cet exemple)=
=Minimum width (set to 3 in this example)=




Line 545: Line 257:




=Currency=
=Devise=




==US currency (dollar sign and cents optional)==
==Monnaie américaine (signe dollar et cents en option)==


  <source lang="html">/^\$?\d+(\.(\d{2}))?$/</source>
  <source lang="html">/^\$?\d+(\.(\d{2}))?$/</source>


Check for comma usage:
Vérifiez l'utilisation des virgules :
<source lang="html">/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/</source>
<source lang="html"> /^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/</source>


==Swiss price==
==Prix suisse==


A number with two decimal numbers after the decimal point of which the last one is either a 5 or a 0:
Un nombre avec deux nombres décimaux après la virgule dont le dernier est soit un 5, soit un 0 :


  <source lang="html">/^(\d+)(\.\d(05)?)?$/</source>
  <source lang="html">/^(\d+)(\.\d(05)?)?$/</source>




=Validate score=
=Valider le score=




Line 574: Line 286:




=Text validation=
=Validation du texte=




The [[Question type - Multiple short text|multiple short text question type]] doesn't support minimum or maximum answers at the moment. One way around this is to use a [[Question type - Long free text|long free text question type]] with a regular expression.
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.


The below expression tests for at least one word per line for at least 3 lines and no more than 10 lines:
L'expression ci-dessous teste au moins un mot par ligne pendant au moins 3 lignes et pas plus de 10 lignes :


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


If you want, say five words per line, you could change the first and last star/asterisk to {4,}:
Si vous le souhaitez, dites cinq mots par ligne, vous pouvez remplacer la première et la dernière étoile/astérisque par {4,} :


<source lang="html">/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is</source>
<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>


If you wanted one or more words per line (between line 1 and line 5), you can change the content located within the last curly braces to '''0,4''' (note you use 0 because you're already matching the first line).
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).


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


==Word count==
==Nombre de mots==


  The following restricts the number of words allowed to a minimum of 1 and a maximum of 200:
  Ce qui suit limite le nombre de mots autorisés à un minimum de 1 et un maximum de 200 :


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


  To increase the minimum change the zero part of {0,199}.
  Pour augmenter le minimum, modifiez la partie zéro de {0,199}.


To increase or decrease the maximum change the "199" part of {0,199}.
Pour augmenter ou diminuer le maximum, modifiez la partie "199" de {0,199}.


=Time validation=
=Validation du temps=




There are a number of ways to write time formats. Some of the possible options are 12 hour or 24 hour, with seconds or without. Although it is an option to use the [[Question type - Date|date question type]] (it can also capture time) you can use the [[Question type - Short free text|short free text question type]] with one of the below validation regular expressions.
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.


The following three validation strings test for 24 hour time (in order of appearances) without seconds, with optional seconds lastly with seconds required:
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 :


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


The following three match 12 hour time, as above with seconds, optional seconds and with seconds required:
Les trois éléments suivants correspondent à une heure de 12 heures, comme ci-dessus avec les secondes, les secondes facultatives et les secondes requises :


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


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


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


The following three match either 12 or 24 hour time as above with seconds, optional seconds and with seconds required:
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 :


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


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


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


=US states=
=États américains=




To validate for one state use the following (example is Texas):
Pour valider un état, utilisez ce qui suit (exemple : Texas) : 
*TX uppercase only: <source lang="html">/^(TX)$/</source>
*TX en majuscules uniquement :<source lang="html"> /^(TX)$/</source>  
*tx lowercase only: <source lang="html">/^(tx)$/</source>
*tx en minuscules uniquement :<source lang="html"> /^(tx)$/</source>  
*TX upper or lowercase: <source lang="html">/^([T|t][X|x])$/</source>
*TX majuscule ou minuscule :<source lang="html"> /^([T|t][X|x])$/</source>




=Profanity Filter=
=Filtre de grossièretés=




To filter profanity words from an answer:
Pour filtrer les grossièretés d'une réponse :


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


Replace "ENTERPROFANITYHERE" with your bad word.
Remplacez "ENTERPROFANITYHERE" par votre gros mot.


The \b will allow passing of words such as "assassination" and "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.
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.




=Helpful links=
=Liens utiles=




In the beginning of this wiki section, we recommend you to use https://regex101.com/ to test/create regular expressions. You can also use https://www.regextester.com/ to create expressions in case you are unhappy about the first option.
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.