# Contrainte

La colonne constraint est utilisée pour valider la saisie utilisateur. Elle empêche l'utilisateur de continuer tant que la réponse ne satisfait pas une condition que vous définissez.

Si la réponse ne satisfait pas la contrainte, un message défini dans `constraint_message` est affiché à l'utilisateur.

## 📝 Comment fonctionnent les contraintes

La valeur de la question est représentée par un point (`.`), ce qui signifie « la réponse courante ». Vous construisez une expression logique en utilisant cette valeur.

Les contraintes sont couramment utilisées pour :

* Définir des plages numériques (par ex., l'âge doit être entre 0 et 120)
* Exiger des formats correspondants (par ex., codes postaux, emails)
* Appliquer des dépendances (par ex., date de fin après date de début)

| type    | nom    | label         | constraint                         | constraint\_message                             |
| ------- | ------ | ------------- | ---------------------------------- | ----------------------------------------------- |
| integer | age    | Votre âge     | . >= 18 and . <= 99                | L'âge doit être compris entre 18 et 99          |
| text    | zip    | Code postal   | regex(., '^\d{5}$')                | Saisissez un code postal à 5 chiffres           |
| text    | e-mail | Adresse email | regex(., '^\[^@]+@\[^@]+.\[^@]+$') | Saisissez un email valide                       |
| date    | end    | Date de fin   | . >= ${start}                      | La date de fin doit être après la date de début |

## ☑️ Utilisation du point (.) dans constraint

Le point `.` représente la valeur saisie par l'utilisateur pour la question courante. Utilisez-le dans les fonctions et les expressions :

* `. >= 0` — valide si la valeur est 0 ou plus
* `regex(., '^\d{5}$')` — valide si elle correspond au motif

## 🔠 Références de variables

Vous pouvez utiliser `${question_name}` pour référencer les réponses d'autres questions du formulaire. Assurez-vous que les questions référencées apparaissent plus tôt dans le formulaire.

Exemple :

* `. > ${min_age}` — garantit que la saisie courante est supérieure à une valeur saisie précédemment

## 🔢 Opérateurs et fonctions pour les contraintes

Comme pour la pertinence, vous pouvez utiliser :

\=, !=, >, <, >=, <= and, or, not()

| Fonction        | Description                           | Exemple                                         |
| --------------- | ------------------------------------- | ----------------------------------------------- |
| regex()         | Valide le format d'une saisie texte   | `regex(., '^\d{5}$')` pour les codes postaux US |
| string-length() | Vérifie le nombre de caractères       | `string-length(.) <= 50`                        |
| selected()      | Vérifie si un choix a été sélectionné | `selected(${choices}, 'option1')`               |
| today()         | Récupère la date actuelle             | `. <= today()`                                  |
| now()           | Récupère la date et l'heure actuelles | `. <= now()`                                    |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ngsurvey.com/fr/projects/import-export/xlsform/feuille-de-sondage/contrainte.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
