# Validierungsregeln

Validierungsregeln sorgen dafür, dass nur korrekte Daten in Ihr System gelangen. Sie prüfen Eingaben in Echtzeit und geben klare Hinweise, wenn etwas nicht stimmt – bevor das Formular abgesendet wird.

## Was ist Validierung?

Bei einer Postleitzahl wissen Sie: Sie muss genau 5 Ziffern haben. Ohne Validierung könnten Nutzer "12" oder "123ABC" eingeben – beides falsch. Mit Validierung erhalten sie sofort eine Rückmeldung: "Die Postleitzahl muss aus genau 5 Ziffern bestehen."

**Vorteile:** Saubere Daten in Ihrem System, weniger Nacharbeit, sofortiges Feedback für Nutzende mit klaren Fehlermeldungen

## Validierungsregeln hinzufügen

{% stepper %}
{% step %}
**Feld auswählen**

1. Öffnen Sie Ihr Formular im Editor
2. Klicken Sie auf das Feld, das Sie prüfen möchten
3. Im Konfigurationsmenü rechts erscheinen die Feldeinstellungen

{% hint style="info" %}
**Hinweis:** Nicht alle Feldtypen benötigen Validierung. Manche Felder haben bereits eingebaute Validierung:

* **Auswahllisten:** Nur die vorgegebenen Optionen sind wählbar
* **E-Mail-Felder:** Prüfen automatisch auf gültiges E-Mail-Format
* **URL-Felder:** Prüfen auf gültiges URL-Format
* **Zahlenfelder:** Erlauben nur numerische Eingaben
* **Datumsfelder:** Erlauben nur gültige Datumsangaben
  {% endhint %}
  {% endstep %}

{% step %}
**Validierungsregel erstellen**

1. Wechseln Sie zum Reiter **"Validierungen"** im Konfigurationsmenü
2. Klicken Sie auf **"Validierungsregel hinzufügen"**
3. Wählen Sie die Art der Validierung:

{% tabs %}
{% tab title="Visueller Ersteller (Empfohlen)" %}
**Validierung ohne Code:**

1. **Bedingung festlegen:** Wann ist die Eingabe gültig?
   * Feld entspricht einem Muster
   * Wert liegt in einem Bereich
   * Eingabe erfüllt eine Bedingung
2. **Fehlermeldung eingeben:** Was sehen Nutzende, wenn die Validierung fehlschlägt?
   * Klar und verständlich
   * Sagt, was zu tun ist
   * Beispiel: "Die Postleitzahl muss aus genau 5 Ziffern bestehen (z.B. 10115)"

**Beispiel:**

* **Bedingung:** Feldlänge entspricht 5 Zeichen UND alle Zeichen sind Ziffern
* **Fehlermeldung:** "Bitte geben Sie eine gültige 5-stellige Postleitzahl ein"
  {% endtab %}

{% tab title="Ausdruck (Fortgeschritten)" %}
**Validierung als Ausdruck schreiben:**

Für komplexe Prüfungen können Sie Ausdrücke direkt eingeben:

```
postleitzahl.matches('[0-9]{5}')
```

Das prüft, ob die Postleitzahl aus genau 5 Ziffern besteht.

**Fehlermeldung:** "Die Postleitzahl muss aus genau 5 Ziffern bestehen"

→ Mehr Details: [Ausdrücke verstehen](/formulare/erweitert/ausdruecke.md)
{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}
**Fehlermeldung formulieren**

Formulieren Sie klar und verständlich. Fügen Sie ein Beispiel hinzu.

**✅ Gut:** "Die Postleitzahl muss aus genau 5 Ziffern bestehen (z.B. 10115)"

**❌ Schlecht:** "Ungültige Eingabe" (zu allgemein), "Fehler 123" (zu technisch)
{% endstep %}

{% step %}
**Testen und Speichern**

1. **Speichern Sie die Validierungsregel**
2. **Öffnen Sie die Vorschau**
3. **Testen Sie bewusst fehlerhafte Eingaben:**
   * Wird die Fehlermeldung angezeigt?
   * Ist sie verständlich?
   * Kann das Formular mit falschen Daten abgesendet werden? (Sollte nicht möglich sein!)

{% hint style="warning" %}
**Wichtig:** Testen Sie auch Grenzfälle:

* Was passiert bei leeren Feldern?
* Was bei sehr langen Eingaben?
* Was bei Sonderzeichen?
  {% endhint %}
  {% endstep %}
  {% endstepper %}

## Häufige Validierungsregeln

| Anwendungsfall                     | Ausdruck                                          | Fehlermeldung                                                                     |
| ---------------------------------- | ------------------------------------------------- | --------------------------------------------------------------------------------- |
| **Postleitzahl (5 Ziffern)**       | `postleitzahl.matches('[0-9]{5}')`                | "Bitte geben Sie eine gültige 5-stellige Postleitzahl ein (z.B. 10115)"           |
| **Telefonnummer**                  | `telefon.matches('(\\+49\|0)[0-9\\s\\-]{6,}')`    | "Bitte geben Sie eine gültige Telefonnummer ein (z.B. +49 30 12345678)"           |
| **Mindestlänge (z.B. 10 Zeichen)** | `size(beschreibung) >= 10`                        | "Die Beschreibung muss mindestens 10 Zeichen lang sein"                           |
| **Zahlenbereich (z.B. 18-99)**     | `alter >= 18 && alter <= 99`                      | "Das Alter muss zwischen 18 und 99 liegen"                                        |
| **Datum in der Zukunft**           | `datum > today()`                                 | "Das Datum muss in der Zukunft liegen"                                            |
| **Optional mit Mindestlänge**      | `size(kommentar) == 0 \|\| size(kommentar) >= 20` | "Falls Sie einen Kommentar hinterlassen, muss er mindestens 20 Zeichen lang sein" |

→ Weitere Beispiele und Details: [Ausdrücke](/formulare/erweitert/ausdruecke.md)

## Mehrere Validierungsregeln kombinieren

Ein Feld kann mehrere Validierungsregeln haben. Sie werden von oben nach unten geprüft – die erste fehlgeschlagene Regel zeigt ihre Fehlermeldung an.

## Bedingte Validierung

Validierungsregeln können auch nur unter bestimmten Bedingungen gelten. **Beispiel:** Die Handelsregisternummer ist nur erforderlich, wenn "Unternehmen" als Antragsteller gewählt wurde.

→ Mehr Details: [Bedingungen einrichten](/formulare/erweitert/bedingungen.md)

## Validierungsregeln bearbeiten oder löschen

Klicken Sie auf das Feld, wechseln Sie zum Reiter "Validierungen" und klicken Sie auf "Bearbeiten" oder "Löschen" neben der Regel.

## Häufige Fehler vermeiden

**❌ Zu strenge Validierung:** Seien Sie großzügig bei der Akzeptanz verschiedener Formate (z.B. Telefon: "+49 30 123" und "030/123" beide akzeptieren).

**❌ Fehlende Beispiele:** Fügen Sie immer ein Beispiel hinzu: "z.B. 10115" oder "Beispiel: +49 30 12345678"

**❌ Validierung auf leeren Feldern:** Bei optionalen Feldern mit Leerprüfung kombinieren: `size(feld) == 0 || feld.matches('[0-9]{5}')`

**❌ Zu technische Sprache:** Nicht "Regex-Muster \[0-9]{5}", sondern "Bitte geben Sie eine 5-stellige Zahl ein"

## Reguläre Ausdrücke (Regex)

Viele Validierungsregeln nutzen Muster (Regular Expressions). **Wichtigste Zeichen:** `[0-9]` = Ziffer, `{5}` = genau 5-mal, `+` = eines oder mehr, `\\` = Sonderzeichen maskieren.

**Beispiele:** `[0-9]{5}` = genau 5 Ziffern (PLZ), `(\\+49|0)[0-9\\s\\-]{6,}` = Telefonnummer

→ Vollständige Regex-Referenz: [Ausdrücke](/formulare/erweitert/ausdruecke.md)

## Bewährte Vorgehensweisen

**✅ Empfohlen:** Klare Fehlermeldungen mit Beispielen, großzügige Muster für verschiedene Formate, immer in Vorschau testen

**❌ Vermeiden:** Zu strenge Regeln, technische Sprache, fehlende Formathinweise, Validierung ohne Test

## Validierung nach der Freischaltung

{% hint style="warning" %}
**Wichtig:** Sie können Validierungsregeln auch nach der Freischaltung ändern:

* Verschärfungen könnten laufende Einreichungen blockieren
* Lockerungen sind meist unproblematisch
* Testen Sie Änderungen immer in einer Kopie des Formulars
  {% endhint %}

**Empfehlung:** Planen Sie Validierungen sorgfältig vor der Freischaltung. So vermeiden Sie spätere Probleme.

## Weitere Hilfe

**→** [**Bedingungen einrichten**](/formulare/erweitert/bedingungen.md) – Felder bedingt anzeigen oder als Pflicht markieren

**→** [**Ausdrücke**](/formulare/erweitert/ausdruecke.md) – Komplexe Validierungen für erfahrene Nutzer

**→** [**Visueller Bedingungseditor**](/formulare/erweitert/bedingungseditor.md) – Bedingungen ohne Programmierung erstellen

**→** [**Feldtypen**](/formulare/erstellen/feldtypen.md) – Welche Felder haben eingebaute Validierung?


---

# 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.polyteia.com/formulare/erweitert/validierung.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.
