Reguläre Ausdrücke und Datenvalidierung in Formularen

Reguläre Ausdrücke und Datenvalidierung in Formularen

Was sind reguläre Ausdrücke und wie verwendet man sie?

Ein regulärer Ausdruck, kurz Regex, ist ein Muster, das einen bestimmten Textabschnitt beschreibt. Wenn Sie beispielsweise sicherstellen möchten, dass eine Person, die ein Formular ausfüllt, genau den von Ihnen geforderten Text eingibt, können Sie einen regulären Ausdruck verwenden, um ein bestimmtes Eingabemuster zu erzwingen oder die Daten zu validieren.

Nehmen wir beispielsweise an, Sie möchten eine britische Sozialversicherungsnummer (National Insurance Number, NIN) abfragen. Diese hat folgendes Muster: 2 Zeichen, gefolgt von 6 Ziffern und einem weiteren Zeichen. Ein regulärer Ausdruck, der diesem Muster entspricht, wäre:

[az|AZ]{2}[0-9]{6}[az|AZ]

Hier bedeutet [az] „beliebiger Kleinbuchstabe“, [AZ] bedeutet „beliebiger Großbuchstabe“, | bedeutet „oder“, also bedeutet [az|AZ] „beliebiges Zeichen“, {2} bedeutet „zweimal wiederholen“ usw.

Manche Regierungen stellen reguläre Ausdrücke für häufig verwendete Muster bereit. Siehe beispielsweise diesen Wikipedia- Artikel über britische Postleitzahlen.

Für eine schnelle Übersicht über reguläre Ausdrücke suchen Sie nach einem „Leitfaden für reguläre Ausdrücke“ oder lesen Sie weiter.

Charakter

Legende

Beispiel

Beispielübereinstimmung

\D

Die meisten Motoren: eine Ziffer
von 0 bis 9

file_\d\d

Datei_25

\D

.NET, Python 3: Eine Unicode-Ziffer in jedem Skript

file_\d\d

file_9੩

\w

Die meisten Engines: „Wortzeichen“: ASCII-Buchstabe, Ziffer oder Unterstrich

\w-\w\w\w

A-b_1

\w

Python 3: „Wortzeichen“: Unicode-Buchstabe, -Ideogramm, -Ziffer oder -Unterstrich

\w-\w\w\w

字-ま_۳

\w

.NET: „Wortzeichen“: Unicode-Buchstabe, -Ideogramm, -Ziffer oder -Verbindungszeichen.

\w-\w\w\w

字-ま‿۳

\S

Die meisten Engines: „Leerzeichen“: Leerzeichen, Tabulator, Zeilenumbruch, Wagenrücklauf, vertikaler Tabulator

a\sb\sc

ab
C

\S

.NET, Python 3, JavaScript: "Leerzeichen": beliebiges Unicode-Trennzeichen

a\sb\sc

ab
C

\D

Ein Zeichen, das keine Ziffer im Sinne der Definition Ihres Systems ist (\d).

\D\D\D

ABC

\W

Ein Zeichen, das kein Wortzeichen im Sinne der Definition Ihrer Engine ist (\w).

\W\W\W\W\W

*-+=)

\S

Ein Zeichen, das kein Leerzeichen im Sinne der Definition Ihres Systems ist (\s).

\S\S\S\S

Jojo

Quantoren

Quantor

Legende

Beispiel

Beispielübereinstimmung

+

Ein oder mehrere

Version \w-\w+

Version A-b1_1

{3}

Genau dreimal

\D{3}

ABC

{2,4}

Zwei- bis viermal

\d{2,4}

156

{3,}

Drei oder mehr Male

\w{3,}

Regex-Tutorial

*

Null oder mehr Male

ABC*

AAACC

?

Einmal oder gar nicht

Pluralformen?

Plural

Weitere Charaktere

Charakter

Legende

Beispiel

Beispielübereinstimmung

Die

Beliebiges Zeichen außer Zeilenumbruch

Klimaanlage

ABC

Die

Beliebiges Zeichen außer Zeilenumbruch

.*

Egal, Mann.

.

Ein Punkt (Sonderzeichen: muss mit einem Backslash maskiert werden)

a\.c

Klimaanlage

\

Entkommt einer besonderen Figur

\.\*\+\? \$\^\/\\

.*+? $^/\

\

Entkommt einer besonderen Figur

\[\{\(\)\}\]

[{()}]

Logik

Logik

Legende

Beispiel

Beispielübereinstimmung

|

Alternative / ODER Operand

22|33

33

( … )

Erfassungsgruppe

A(nt|pple)

Apple (erfasst "Pfeife")

1

Inhalt der Gruppe 1

r(\w)g\1x

regulärer Ausdruck

2

Inhalte der Gruppe 2

(\d\d)\+(\d\d)=\2\+\1

12 + 65 = 65 + 12

(?: … )

Nicht-Erfassungsgruppe

A(?:nt|pple)

Apfel

Mehr Leerraum

Charakter

Legende

Beispiel

Beispielübereinstimmung

\T

Tab

T\t\w{2}

T ab

\R

Wagenrücklaufzeichen

siehe unten

\N

Zeilenvorschubzeichen

siehe unten

\r\n

Linientrenner unter Windows

AB\r\nCD

AB
CD

\N

Perl, PCRE (C, PHP, R…): ein Zeichen, das kein Zeilenumbruch ist

\N+

ABC

\H

Perl, PCRE (C, PHP, R…), Java: ein horizontales Leerzeichen: Tabulator oder Unicode-Leerzeichen

\H

Ein Zeichen, das kein horizontaler Leerraum ist

\v

.NET, JavaScript, Python, Ruby: vertikaler Tab

\v

Perl, PCRE (C, PHP, R…), Java: ein vertikales Leerzeichen: Zeilenvorschub, Wagenrücklauf, vertikaler Tabulator, Seitenvorschub, Absatz- oder Zeilentrennzeichen

\V

Perl, PCRE (C, PHP, R…), Java: jedes Zeichen, das kein vertikaler Leerraum ist

\R

Perl, PCRE (C, PHP, R…), Java: ein Zeilenumbruch (Wagenrücklauf + Zeilenvorschubpaar und alle Zeichen, die durch \v übereinstimmen)

Weitere Quantifizierer

Quantor

Legende

Beispiel

Beispielübereinstimmung

+

Das + (eins oder mehrere) bedeutet "gierig".

\d+

12345

?

Macht Quantoren "faul"

\d+?

1 von 1 2345

*

Das * (null oder mehr) bedeutet „gierig“.

A*

AAA

?

Macht Quantoren "faul"

A*?

leer in AAA

{2,4}

Zwei- bis viermal, „gierig“

\w{2,4}

abcd

?

Macht Quantoren "faul"

\w{2,4}?

ab in ab cd

Charakterklassen

Charakter

Legende

Beispiel

Beispielübereinstimmung

[ … ]

Eines der Zeichen in den Klammern

[AEIOU]

Ein Großbuchstabe

[ … ]

Eines der Zeichen in den Klammern

T[ao]p

Tippen oder Top

-

Bereichsanzeige

[az]

Ein Kleinbuchstabe

[xy]

Eines der Zeichen im Bereich von x bis y

[AZ]+

GROSSARTIG

[ … ]

Eines der Zeichen in den Klammern

[AB1-5w-z]

Eines der folgenden: A, B, 1, 2, 3, 4, 5, w, x, y, z

[xy]

Eines der Zeichen im Bereich von x bis y

[ -~]+

Zeichen im druckbaren Teil der ASCII-Tabelle .

[^x]

Ein Zeichen, das nicht x ist

[^az]{3}

A1!

[^xy]

Eines der Zeichen, das nicht im Bereich von x bis y liegt.

[^ -~]+

Zeichen, die nicht im druckbaren Teil der ASCII-Tabelle enthalten sind.

[\d\D]

Ein Zeichen, das eine Ziffer oder ein Nicht-Ziffernzeichen ist.

[\d\D]+

Alle Zeichen, einschließlich
einschließlich neuer Zeilen, zu denen der normale Punkt nicht passt.

[\x41]

Entspricht dem Zeichen an der hexadezimalen Position 41 in der ASCII-Tabelle, d. h. A

[\x41-\x45]{3}

ABE


Anker und Grenzen

Anker

Legende

Beispiel

Beispielübereinstimmung

^

Zeichenkettenanfang oder Zeilenanfang, abhängig vom Mehrzeilenmodus. (Aber wenn [^ innerhalb von Klammern] steht, bedeutet es „nicht“.)

^abc .*

abc (Zeilenanfang)

$

Zeichenkettenende oder Zeilenende , abhängig vom Mehrzeilenmodus. Viele vom jeweiligen Engine abhängige Feinheiten.

.*? das Ende$

Dies ist das Ende.

\A

Anfang der Zeichenkette
(alle gängigen Engines außer JS)

\Aabc[\d\D]*

abc (Zeichenkette...
...Start)

\z

ganz Ende der Schnur
Nicht verfügbar in Python und JS

das Ende

Dies ist... das Ende

\Z

Ende der Zeichenkette oder (außer in Python) vor dem letzten Zeilenumbruch
In JS nicht verfügbar.

das Ende\Z

Dies ist...\n... das Ende \n

\G

Anfang der Zeichenkette oder Ende der vorherigen Übereinstimmung
.NET, Java, PCRE (C, PHP, R…), Perl, Ruby

\B

Wortgrenze
Die meisten Motoren: Position, bei der nur eine Seite ein ASCII-Buchstabe, eine Ziffer oder ein Unterstrich ist.

Bob.*\bcat\b

Bob aß die Katze

\B

Wortgrenze
.NET, Java, Python 3, Ruby: Position, bei der nur eine Seite ein Unicode-Buchstabe, eine Ziffer oder ein Unterstrich ist

Bob.*\b\кошка\b

Bob aß die Koschka

\B

Keine Wortgrenze

c.*\Bcat\B.*

Nachahmer

Wir verwenden Cookies, um Ihr Surferlebnis zu verbessern und den Website-Verkehr zu analysieren. Durch Klicken auf "Akzeptieren" stimmen Sie der Verwendung von Cookies zu. Datenschutz