# Validation de saisie

## ☑️ Quelle validation de saisie ?

En plus de vérifier si une valeur a été saisie dans un champ, vous pouvez également configurer des règles plus avancées en utilisant des expressions régulières afin de vous assurer que le texte saisi par le Répondant correspond à certaines conditions.

Vous pouvez également définir la **longueur maximale de caractères** autorisée pour être saisie dans votre champ.

![](https://186103257-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8fLhS0bmfBRyq0HdUm%2F-MBxJW6_rwxooZXjfBZJ%2F-MBxSXjb6_rt4xDgQCuU%2Fimage.png?alt=media\&token=8c2583e9-c6bb-412f-9f33-ff2e50b049b9)

{% hint style="info" %}
Les utilisateurs avancés peuvent aussi créer un champ personnalisé basé [answer type](https://docs.ngsurvey.com/fr/form-management/form-designer/answers/answer-types/creating-new-type) sur  [validation javascript personnalisée](https://docs.ngsurvey.com/fr/form-management/form-designer/answers/answer-types/creating-new-type/custom-validation-code) pour valider les saisies du Répondant.
{% endhint %}

## 🔢 Expressions régulières

Un [expression régulière](https://en.wikipedia.org/wiki/Regular_expression) (regex) est un motif de recherche basé sur une chaîne qui vérifiera si le texte saisi par le Répondant correspond ou non au motif de l'expression.&#x20;

![](https://186103257-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8fLhS0bmfBRyq0HdUm%2F-MBhEHQX1dJgLFMgYGxh%2F-MBhF_WSjl4w9Zy_E3R9%2Fimage.png?alt=media\&token=0717f3d7-23b5-428d-8ee6-d83a28f3a34c)

En utilisant ces motifs, vous vérifiez une valeur à l'aide de modèles tels que emails, nombres, codes postaux, etc. ... Presque tout [champ](https://docs.ngsurvey.com/fr/form-management/form-designer/answers/answer-types/entry-field) basé peut être validé contre une expression régulière créée à l'aide de l'éditeur d'expressions régulières.

## ➕ Ajout d'une expression régulière

Pour ajouter une expression régulière, allez à la [page des propriétés de la réponse](https://docs.ngsurvey.com/fr/form-management/form-designer/answers/answer-properties) et cliquez sur l' **+** icône

![](https://186103257-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M8fLhS0bmfBRyq0HdUm%2F-MBxlrzsAiMipW8XigrE%2F-MBxmVt6uM9ItWMtBWkC%2Fimage.png?alt=media\&token=fe1c1c57-6254-48b7-a217-05d420ddf338)

{% hint style="info" %}
Les expressions régulières ne sont disponibles que pour l'utilisateur qui les a créées. Si vous souhaitez partager votre expression régulière avec tous les autres utilisateurs de ngSurvey, vous pouvez activer sa **propriété intégrée** .
{% endhint %}

## 🔅 Propriétés de l'expression régulière

* **`Nom`** est le nom d'affichage de l'expression régulière.
* **`Expression régulière`** est le motif d'expression régulière réel qui sera utilisé pour faire correspondre la réponse du Répondant.
* **`Message d'erreur`** message d'erreur qui sera affiché au Répondant si sa saisie ne correspond pas au motif.
* **`Intégrée`** nous permet de partager l'expression régulière avec tous les autres utilisateurs.

{% hint style="info" %}
Vous pouvez trouver des expressions régulières préconçues et tester les vôtres sur  <https://regex101.com/>
{% endhint %}

## 🔢 Javascript

Pour les réponses basées sur un champ, vous pouvez définir la propriété Javascript validation et Validation message sur le [page des propriétés de la réponse](https://docs.ngsurvey.com/fr/form-management/form-designer/answers/answer-properties/field-properties) pour utiliser du code javascript personnalisé afin de valider votre réponse. \
\
Dans le code ci-dessous, respondentAnswerValue sera remplacé par la valeur réelle du champ. Si le code retourne false, ngSurvey bloquera la soumission ou la navigation et affichera le message de validation.

```
return (respondentAnswerValue >= 18 && respondentAnswerValue <= 99);
```

Dans le code ci-dessous, nous utilisons getAnswer dans le contexte de validation pour obtenir une valeur d'une autre réponse dans le Sondage. Ici, nous recherchons une réponse avec un alias de reporting défini sur "hh\_people".&#x20;

<pre><code><a data-footnote-ref href="#user-content-fn-1">re</a>turn (respondentAnswerValue &#x3C;= validationContext.getAnswer('hh_people'));
</code></pre>

Le contexte de validation prend en charge les méthodes et propriétés suivantes

```typescript
export class ValidationContext {
   answer:Answer, // Réponse actuelle en cours de validation
   question:Question, // Question actuelle de la réponse en cours de validation
   questions:Question[], // Toutes les questions du Sondage
   answers: Answer[];  // Toutes les réponses du Sondage

  public getAnswer(id: string): string // Obtient la valeur d'une réponse en recherchant son alias de reporting ou son id
  public isSelectedAnswer(id: string, value: string): boolean // Recherche une question en fonction de son id ou de son alias de reporting et vérifie si la valeur donnée est sélectionnée 
}

```

[^1]:
