Zum Hauptinhalt springen

Reguläre Ausdrücke und Datenvalidierung in Formularen

Formulare in MyDocSafe unterstützen reguläre Ausdrücke.

Was sind reguläre Ausdrücke und wie verwenden Sie sie?

Ein regulärer Ausdruck, kurz Regex, ist ein Muster, das eine bestimmte Zeichenfolge beschreibt. Wenn Sie beispielsweise sicherstellen möchten, dass eine Person beim Ausfüllen eines Formulars genau den von Ihnen geforderten Text eingibt, können Sie mit einem regulären Ausdruck ein bestimmtes Eingabemuster erzwingen oder die Daten validieren.

Angenommen, Sie möchten eine Sozialversicherungsnummer aus dem UK (National Insurance Number, NIN) abfragen. Sie besteht aus 2 Buchstaben, gefolgt von 6 Ziffern und einem weiteren Buchstaben. Ein regulärer Ausdruck für dieses Muster lautet:

[a-z|A-Z]{2}[0-9]{6}[a-z|A-Z]

Dabei bedeutet [a-z] „ein beliebiger Kleinbuchstabe“, [A-Z] „ein beliebiger Großbuchstabe“ und | „oder“. Somit bedeutet [a-z|A-Z] „ein beliebiger Buchstabe“, {2} bedeutet „zweimal wiederholen“ usw.

Einige Regierungen stellen reguläre Ausdrücke für häufig verwendete Muster bereit. Ein Beispiel finden Sie in diesem Wikipedia-Artikel über Postleitzahlen im UK.

Für eine Kurzübersicht zu regulären Ausdrücken suchen Sie nach „Anleitung zu regulären Ausdrücken“ oder lesen Sie weiter.

Zeichen

Bedeutung

Beispiel

Beispieltreffer

\d

Die meisten Implementierungen: eine Ziffer
von 0 bis 9

file_\d\d

file_25

\d

.NET, Python 3: eine Unicode-Ziffer aus einem beliebigen Schriftsystem

file_\d\d

file_9੩

\w

Die meisten Implementierungen: „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 verbindendes Zeichen

\w-\w\w\w

字-ま‿۳

\s

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

a\sb\sc

a b
c

\s

.NET, Python 3, JavaScript: „Leerraumzeichen“: ein beliebiges Unicode-Trennzeichen

a\sb\sc

a b
c

\D

Ein Zeichen, das keine Ziffer gemäß der Definition von \d in Ihrer Implementierung ist

\D\D\D

ABC

\W

Ein Zeichen, das kein Wortzeichen gemäß der Definition von \w in Ihrer Implementierung ist

\W\W\W\W\W

*-+=)

\S

Ein Zeichen, das kein Leerraumzeichen gemäß der Definition von \s in Ihrer Implementierung ist

\S\S\S\S

Yoyo

Quantifizierer

Quantifizierer

Bedeutung

Beispiel

Beispieltreffer

+

Einmal oder häufiger

Version \w-\w+

Version A-b1_1

{3}

Genau dreimal

\D{3}

ABC

{2,4}

Zwei- bis viermal

\d{2,4}

156

{3,}

Dreimal oder häufiger

\w{3,}

regex_tutorial

*

Nullmal oder häufiger

A*B*C*

AAACC

?

Einmal oder keinmal

plurals?

plural

Weitere Zeichen

Zeichen

Bedeutung

Beispiel

Beispieltreffer

.

Ein beliebiges Zeichen außer einem Zeilenumbruch

a.c

abc

.

Ein beliebiges Zeichen außer einem Zeilenumbruch

.*

wie auch immer.

\.

Ein Punkt (Sonderzeichen: muss durch vorangestelltes \ maskiert werden)

a\.c

a.c

\

Maskiert ein Sonderzeichen

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

.*+? $^/\

\

Maskiert ein Sonderzeichen

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

[{()}]

Logik

Logik

Bedeutung

Beispiel

Beispieltreffer

|

Alternative / ODER-Verknüpfung

22|33

33

( … )

Erfassende Gruppe

A(nt|pple)

Apple (erfasst „pple“)

\1

Inhalt von Gruppe 1

r(\w)g\1x

regex

\2

Inhalt von Gruppe 2

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

12+65=65+12

(?: … )

Nicht erfassende Gruppe

A(?:nt|pple)

Apple

Weitere Leerraumzeichen

​

Zeichen

Bedeutung

Beispiel

Beispieltreffer

\t

Tabulator

T\t\w{2}

T ab

\r

Wagenrücklaufzeichen

siehe unten

\n

Zeilenvorschubzeichen

siehe unten

\r\n

Zeilentrenner 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 Leerraumzeichen: Tabulator oder Unicode-Leerzeichen

\H

Ein Zeichen, das kein horizontales Leerraumzeichen ist

\v

.NET, JavaScript, Python, Ruby: vertikaler Tabulator

\v

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

\V

Perl, PCRE (C, PHP, R…), Java: ein beliebiges Zeichen, das kein vertikales Leerraumzeichen ist

\R

Perl, PCRE (C, PHP, R…), Java: ein Zeilenumbruch (Kombination aus Wagenrücklauf und Zeilenvorschub sowie alle Zeichen, auf die \v zutrifft)

Weitere Quantifizierer

Quantifizierer

Bedeutung

Beispiel

Beispieltreffer

+

+ (einmal oder häufiger) ist „gierig“

\d+

12345

?

Macht Quantifizierer „nicht gierig“

\d+?

1 in 12345

*

* (nullmal oder häufiger) ist „gierig“

A*

AAA

?

Macht Quantifizierer „nicht gierig“

A*?

leere Zeichenfolge in AAA

{2,4}

Zwei- bis viermal, „gierig“

\w{2,4}

abcd

?

Macht Quantifizierer „nicht gierig“

\w{2,4}?

ab in abcd

Zeichenklassen

Zeichen

Bedeutung

Beispiel

Beispieltreffer

[ … ]

Eines der Zeichen in den Klammern

[AEIOU]

Ein großgeschriebener Vokal

[ … ]

Eines der Zeichen in den Klammern

T[ao]p

Tap oder Top

-

Bereichsangabe

[a-z]

Ein Kleinbuchstabe

[x-y]

Eines der Zeichen im Bereich von x bis y

[A-Z]+

GREAT

[ … ]

Eines der Zeichen in den Klammern

[AB1-5w-z]

Eines dieser Zeichen: A,B,1,2,3,4,5,w,x,y,z

[x-y]

Eines der Zeichen im Bereich von x bis y

[ -~]+

Zeichen aus dem druckbaren Bereich der ASCII-Tabelle.

[^x]

Ein Zeichen, das nicht x ist

[^a-z]{3}

A1!

[^x-y]

Ein Zeichen, das nicht im Bereich von x bis y liegt

[^ -~]+

Zeichen, die nicht im druckbaren Bereich der ASCII-Tabelle liegen.

[\d\D]

Ein Zeichen, das eine Ziffer oder keine Ziffer ist

[\d\D]+

Beliebige Zeichen, ein-
schließlich Zeilenumbrüchen, die der normale Punkt nicht erfasst

[\x41]

Erfasst das Zeichen an der hexadezimalen Position 41 in der ASCII-Tabelle, also A

[\x41-\x45]{3}

ABE


​

Anker und Grenzen

Anker

Bedeutung

Beispiel

Beispieltreffer

^

Anfang der Zeichenfolge oder Zeilenanfang, abhängig vom Mehrzeilenmodus. (Innerhalb von [^eckigen Klammern] bedeutet es jedoch „nicht“.)

^abc .*

abc (Zeilenanfang)

$

Ende der Zeichenfolge oder Zeilenende, abhängig vom Mehrzeilenmodus. Viele implementierungsabhängige Feinheiten.

.*? the end$

this is the end

\A

Anfang der Zeichenfolge
(alle gängigen Implementierungen außer JS)

\Aabc[\d\D]*

abc (Zeichenfolgen...
...anfang)

\z

Absolutes Ende der Zeichenfolge
Nicht in Python und JS verfügbar

the end\z

this is...\n...the end

\Z

Ende der Zeichenfolge oder (außer in Python) vor dem letzten Zeilenumbruch
Nicht in JS verfügbar

the end\Z

this is...\n...the end\n

\G

Anfang der Zeichenfolge oder Ende des vorherigen Treffers
.NET, Java, PCRE (C, PHP, R…), Perl, Ruby

\b

Wortgrenze
Die meisten Implementierungen: Position, an der sich nur auf einer Seite ein ASCII-Buchstabe, eine Ziffer oder ein Unterstrich befindet

Bob.*\bcat\b

Bob ate the cat

\b

Wortgrenze
.NET, Java, Python 3, Ruby: Position, an der sich nur auf einer Seite ein Unicode-Buchstabe, eine Ziffer oder ein Unterstrich befindet

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

Bob ate the кошка

\B

c.*\Bcat\B.*

copycats

Hat dies deine Frage beantwortet?