Actions

Benutzung von regulären Ausdrücken

From LimeSurvey Manual

This page is a translated version of the page Using regular expressions and the translation is 100% complete.

Reguläre Ausdrücke müssen am Anfang und Ende mit einem Schrägstrich ("/") umschlossen sein. Sie finden eine gute Bibliothek mit regulären Ausdrücken auf http://www.regexlib.net/. Diese Ausdrücke werden fast alle funktionieren, wenn Sie diese mit dem Schrägstrich einschließen.

Um Ihre RegEx zu testen, können Sie diesen RegEx-Tester verwenden.

Template:Hinweis

  Achtung : Bitte beachten Sie, dass alle folgenden Beispiele in einer Zeile geschrieben sind!



Wichtig: Reguläre Ausdrücke in Bedingungen

Beachten Sie, dass bei der Verwendung von regulären Ausdrücken im Bedingungseditor, der Anfangs-/Endschrägstrich NICHT benutzt werden darf.


E-Mail-Validierung

Update (12/2018): Da Domänennamen heutzutage nicht nur Sonderzeichen wie „ü“ enthalten können, sondern auch mehr als 3 Zeichen als Domänennamen wie .tech oder .company verwenden, prüft der folgende E-Mail-Regex nur, ob „@“ und „.“ existiert innerhalb der eingegebenen E-Mail-Adresse.

 
/^.+?@.+?\..+$/

Wenn Sie eine Adresse pro Zeile validieren möchten, gilt in einem mehrzeiligen Langtextfeld:

 
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\n)?\n?)+)*)$/

Bei dieser veralteten Regex ist der Domainname auf 3 Zeichen beschränkt, was nicht alle verfügbaren Domains abdeckt:

 
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/

Postleitzahlen

Australische Postleitzahlen:

/^[0-9]{4}/

Brasilianische Postleitzahlen

/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/

Kanadische Postleitzahlen

/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/

US-Postleitzahlen

/^[0-9]{5}([- /]?[0-9]{4})?$/

Damit die Postleitzahl mit Null beginnt, verwenden Sie:

/^[0-9]{5}(?:-[0-9]{4})?$/

UK Postleitzahlen

/^[AZ][AZ]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i

Beachten Sie, dass dies nicht sehr genau ist und eine genauere Validierung viel komplexer ist. Weitere Informationen finden Sie beispielsweise unter StackOverflow-Antwort und Wikipedia. Information.

Französische Postleitzahlen

/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)| (^98[46-8]\d{2}$)/

Der obige Ausdruck ist sehr präzise und prüft, ob das französische Departement existiert (erste zwei Ziffern), einschließlich überseeischer Departements und überseeischer Gebiete (DOM-TOM).


Telefonnummern

US-Telefonnummern

/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d {2}[- ]?\d{4}$/

oder

/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\ )\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/

Mit dieser zweiten Option werden alle kanadischen und US-amerikanischen Telefonnummern abgeglichen, die nicht-stellige Symbole enthalten, einschließlich:

. ( ) - (Raum)

Dadurch können Sie Telefonnummern zuordnen, die wie folgt aussehen:

  • (555)555 5555
  • 555.555.5555
  • 555 555 5555
  • (555)-555-5555
  • 555-555-5555
  • 555555555

Australische Telefonnummern

Die folgenden Muster stimmen mit allen verschiedenen australischen Mobil- und Festnetznummern überein, auch mit der Ländervorwahl „+61“:

  • (02) 9123 6535
  • 03 1234-5345
  • 0412 345 678
  • +61 2 3456 789

Aber nicht:

  • 234 3450 234
  • a234 534 3432
  • 134567
  • 123456789013

Klammern, Leerzeichen und Bindestriche werden ignoriert.

Die hier aufgeführten „Sehr präzise:“-Versionen gleichen die ersten vier oder fünf Ziffern einer Zahl ab, um sicherzustellen, dass es sich um gültige australische Zahlen handelt.

Die Angabe „Nicht sehr präzise:“ stimmt nur mit der ersten und zweiten Ziffer überein und lässt daher möglicherweise ungültige Zahlen zu.

Alle australischen Telefonnummern (Mobil- und Festnetz – Vorwahl erforderlich)

Sehr präzise:

/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]? [0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[ 0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2 -7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9] [ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[ 0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/

Nicht sehr präzise:

/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/

Alle australischen Telefonnummern (nur Festnetz – Vorwahl erforderlich)

Sehr präzise:

/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0- 9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9 ]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7] |7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -] ?[0-9]))(?:[ -]?[0-9]){6}$/

Nicht sehr präzise:

/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/

Festnetznummern für New South Wales (Vorwahl optional)

Sehr präzise:

/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[ 0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/

Nicht sehr präzise:

/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/

Viktorianische und tasmanische Festnetznummern (Vorwahl optional)

Sehr präzise:

/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/

Nicht sehr präzise:

/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/

Festnetznummern in Queensland (Vorwahl optional)

Sehr präzise:

/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -] ?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/

Nicht sehr präzise:

/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/

Festnetznummern für Südaustralien, Northern Territory, Westaustralien (Vorwahl optional)

Sehr präzise:

/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9] [0-9])$/

Nicht sehr präzise:

/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/

Nur australische Mobiltelefonnummern

Sehr präzise:

/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ? [7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/

Nicht sehr präzise:

/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/

Belgische Telefonnummer

 /^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/

Belgische Mobiltelefonnummer

 /^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/

Französische Telefonnummer

 /^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/

Französische Mobiltelefonnummer

 /^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/

Luxemburger Telefonnummer

 /^((\+|00\s?)352)?(\s?\d{2}){3,4}$/

Luxemburger Mobiltelefonnummer

 /^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/

Deutsche Zeichen (mit optionalem Plus oder Minus)

 /^[1-6]{1}[\+|\-]?$/


Altersvalidierung

Beispiel: Alter 20-99

 /([2-9][0-9])/

Beispiel: Alter 18-35

 /(1[8-9]|2[0-9]|3[0-5])/

Beispiel: Alter 19-65

 /^(1[8-9]|[2-5][0-9]|6[0-5])$/


Zahlenvalidierung

Zahlen von 1 bis 99999

 /^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9])$/
 /^[1-9][0-9]{0,4}$/ macht das Gleiche wie oben, sollte aber etwas schneller laufen

Zahlen von 1 bis 999, 1.000 bis 999.999 bis 999.999.999

 /^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/

Akzeptiert Zahlen von 1 bis 999, 1.000 bis 999.999 bis 999.999.999, aber lehnt Zahlen wie 999.1.1, 94.22.22, 999.1.22, 999.11.1, 999.1.333 ab

Zahlenvalidierung mit optionaler Dezimalzahl (für Preis)

Akzeptiert Zahlen von 0 bis 199, mit 2 Dezimalstellen optional:

 /^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/

Zahlenvalidierung mit Tausendertrennzeichen

Leerzeichen als Trennzeichen, kein Minus

 /^(?!0)\d{1,3}(\ \d{3})*$/

Punkt als Trennzeichen, Minus erlaubt

 /^-?(?!0)\d{1,3}(\.\d{3})*$/

Es erzwingt zwei Dezimalstellen und akzeptiert Zahlen von 1,00 bis 999.999.999,00 mit einem optionalen Komma zur Trennung von Tausendern/Millionen 3456789.00 aber nicht 1,23,00, 12,3,4 oder 1234,43,04

 /^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

Ähnlich wie oben: Erzwingt zwei Dezimalstellen, akzeptiert aber eine „0“ vor dem Dezimaltrennzeichen ",".

 /[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

Wie oben, aber die beiden Dezimalstellen sind optional:

 /^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/

Monat (1-12)

Wenn Sie nach dem Geburtsmonat einer Person fragen möchten, können Sie die Eingabe wie folgt validieren:

/^[0]*[1-9]$|^[0]*1[0-2]$/

Mindestbreite (in diesem Beispiel auf 3 eingestellt)

/^.{3,}$/


Währung

US-Währung (Dollarzeichen und Cent optional)

/^\$?\d+(\.(\d{2}))?$/

Auf Kommaverwendung prüfen:

 /^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/

Schweizer Preis

Eine Zahl mit zwei Nachkommazahlen, deren letzte entweder eine 5 oder eine 0 ist:

/^(\d+)(\.\d(05)?)?$/


Bewertung validieren

1-10

/^[1-9]{1}$|^10$/

1-100

/^[1-9]?[0-9]{1}$|^100$/


Textvalidierung

Der Fragetyp „Mehrfacher Kurztext“ unterstützt derzeit keine Mindest- oder Höchstantworten. Eine Möglichkeit, dies zu umgehen, besteht darin, einen langer Freitext-Fragetyp mit einem regulären Ausdruck zu verwenden.

Der folgende Ausdruck testet mindestens ein Wort pro Zeile für mindestens 3 Zeilen und nicht mehr als 10 Zeilen:

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){2,10}/is

Wenn Sie möchten, sagen Sie fünf Wörter pro Zeile, können Sie den ersten und letzten Stern/Sternchen in {4,} ändern:

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.; :?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is

Wenn Sie ein oder mehrere Wörter pro Zeile (zwischen Zeile 1 und Zeile 5) wünschen, können Sie den Inhalt in den letzten geschweiften Klammern in „0,4“ ändern (beachten Sie, dass Sie 0 verwenden, da Sie bereits mit der ersten Zeile übereinstimmen).

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?! & \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^, .;:?!& \n\r]+)*)){0,4}/is

Wortanzahl

Folgendes beschränkt die Anzahl der zulässigen Wörter auf mindestens 1 und höchstens 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Um das Minimum zu erhöhen, ändern Sie den Nullteil von {0,199}.

Um den Höchstwert zu erhöhen oder zu verringern, ändern Sie den „199“-Teil von {0,199}.

Zeitvalidierung

Es gibt verschiedene Möglichkeiten, Zeitformate zu schreiben. Einige der möglichen Optionen sind 12 Stunden oder 24 Stunden, mit oder ohne Sekunde. Obwohl es eine Option ist, den Datumsfragetyp zu verwenden (er kann auch die Zeit erfassen), können Sie den Kurzfreier Textfragetyp mit einem der folgenden regulären Validierungsausdrücke verwenden.

Die folgenden drei Validierungszeichenfolgen testen eine 24-Stunden-Zeit (in der Reihenfolge ihres Auftretens) ohne Sekunden, mit optionalen Sekunden und schließlich mit erforderlichen Sekunden:

/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/

Die folgenden drei entsprechen der 12-Stunden-Zeit, wie oben mit Sekunden, optionalen Sekunden und mit erforderlichen Sekunden:

/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0- 9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/
/^(?:00:[0-5][0-9](?::[0-5][0-9])? (?:am|AM)|(?:0[1-9] |1[01]):[0-5][0-9](?::[0-5][0-9])? (?:[ap]m|[AP]M)|12:[ 0-5][0-9](?::[0-5][0-9])? (?:pm|PM))$/
/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01] ):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]: [0-5][0-9] (?:pm|PM))$/

Die folgenden drei entsprechen entweder der 12- oder der 24-Stunden-Zeit wie oben, mit Sekunden, optionalen Sekunden und mit erforderlichen Sekunden:

/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][ 0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9] |2[0-3]):[0-5][0-9])$/
/^(?:(?:00:[0-5][0-9](?[0-5][0-9])? (?:am|AM)|(?:0[1-9 ]|1[01]):[0-5][0-9](?[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0 -5][0-9](?[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]) :[0-5][0-9](?[0-5][0-9])?)$/
/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1 [01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0- 9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0- 9]:[0-5][0-9])$/

US-Bundesstaaten

Zur Validierung für einen Bundesstaat verwenden Sie Folgendes (Beispiel ist Texas):

  • TX nur in Großbuchstaben:
     /^(TX)$/
    
  • tx nur in Kleinbuchstaben:
     /^(tx)$/
    
  • TX Groß- oder Kleinschreibung:
     /^([T|t][X|x])$/
    


Profanitätsfilter

So filtern Sie Schimpfwörter aus einer Antwort:

/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/

Ersetzen Sie „ENTERPROFANITYHERE“ durch Ihr schlechtes Wort.

Das \b erlaubt die Übergabe von Wörtern wie „Assassination“ und „Hallo“, wenn Sie als Schimpfwort „Arsch“ oder „Hölle“ eingeben. Dies funktioniert auch, wenn Sie versuchen, andere Wörter, Namen usw. in den Antworten wegzulassen.


Hilfreiche Links

Am Anfang dieses Wiki-Abschnitts empfehlen wir Ihnen, https://regex101.com/ zu verwenden, um reguläre Ausdrücke zu testen/erstellen. Sie können auch https://www.regextester.com/ verwenden, um Ausdrücke zu erstellen, falls Sie mit der ersten Option unzufrieden sind. Sie können https://extendsclass.com/regex-tester.html verwenden, um reguläre Ausdrücke zu visualisieren.