<MATCHES/> Validierung mit regulären Ausdrücken
Das <MATCHES/>-Tag kann im Bereich Wertermittlung der Regeldefinition (oder für die Definition einer Vorbedingung) eingesetzt werden und dient zur Angabe eines regulären Ausdrucks in einer Regel.
Innerhalb des <MATCHES/>-Tags muss ein Vergleichswert angegeben werden, der sich auf eine bestimmte Eigenschaft des Formularelements (beispielsweise den Wert der Eingabekomponente) oder auch des Formulars („In welcher Sprache wurde das Formular geöffnet?“).bezieht. Dazu ist die Angabe eines <PROPERTY/>-Tags innerhalb des <MATCHES/>-Abschnitts notwendig.
Erfüllt der Vergleichswert die Bedingungen des regulären Ausdrucks, liefert der <MATCHES/>-Abschnitt TRUE zurück, andernfalls FALSE.
Attribut regex
Der reguläre Ausdruck wird über das Attribut „regex“ übergeben. Abhängig vom regulären Ausdruck kann das Vorkommen bestimmter Zeichen, Zeichenketten und Zeichenabfolgen innerhalb des Vergleichswerts untersucht und ausgewertet werden.
<MATCHES regex="ABC" />
Beispiele
1) Sprachabhängige Validierung
Im folgenden Beispiel wird abhängig von der aktuell bearbeiteten Redaktionssprache nur ein bestimmter Zweig der Regel durchlaufen. Die Eingabekomponente „st_standard“, für die die Regel definiert wird, erlaubt die sprachabhängige Angabe einer DIN- (für die Sprache „DE“) oder einer ISO-Norm (für die Sprache „EN“). Die Regel prüft über die Definition einer Vorbedingung, in welcher Sprache das Formular durch den Redakteur bearbeitet wird (Sprachabhängige Validierung).
Für beide Sprachen wird innerhalb der Regel ein unterschiedlicher regulärer Ausdruck definiert, der prüft, ob die Eingabe des Redakteurs für diese Sprache gültig sind.
<RULES>
<ON_SAVE>
<IF>
<EQUAL>
<PROPERTY source="#global" name="LANG"/>
<TEXT>DE</TEXT>
</EQUAL>
</IF>
<WITH>
<MATCHES regex="^DIN\ \d\d*$">
<PROPERTY source="st_standard" name="VALUE"/>
</MATCHES>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_standard" name="VALID"/>
<MESSAGE lang="*" text="No DIN standard given"/>
<MESSAGE lang="DE" text="Keine DIN-Norm angegeben"/>
</VALIDATION>
</DO>
</ON_SAVE>
<ON_SAVE>
<IF>
<NOT>
<EQUAL>
<PROPERTY source="#global" name="LANG"/>
<TEXT>DE</TEXT>
</EQUAL>
</NOT>
</IF>
<WITH>
<MATCHES regex="^ISO\ \d\d*$">
<PROPERTY source="st_standard" name="VALUE"/>
</MATCHES>
</WITH>
<DO>
<VALIDATION>
<PROPERTY source="st_standard" name="VALID"/>
<MESSAGE lang="*" text="No ISO standard given"/>
<MESSAGE lang="DE" text="Keine ISO-Norm angegeben"/>
</VALIDATION>
</DO>
</ON_SAVE>
</RULES>