Folosind expresii regulate
From LimeSurvey Manual
Expresiile regulate trebuie să înceapă și să se termine cu o bară oblică ("/"). Puteți găsi o bibliotecă bună de expresii regulate la http://www.regexlib.net/. Aceste modele vor funcționa aproape întotdeauna dacă sunt înconjurate de bare oblice.
Pentru a vă testa regex, puteți folosi acest tester de regex.
Important: Expresii regulate în condiții
Rețineți că atunci când utilizați expresii regulate în editorul de condiții, NU includeți bara oblică de început și de sfârșit.
Validare e-mail
Actualizare (12/2018): Deoarece în zilele noastre, numele de domenii nu pot conține doar caractere speciale precum „ü”, ci și mai mult de 3 caractere ca nume de domeniu, cum ar fi .tech sau .company, expresia regex de e-mail de mai jos verifică doar dacă „@” și „.” există în adresa de e-mail introdusă.
/^.+?@.+?\..+$/
Dacă doriți să validați o adresă pe linie, într-un câmp text lung cu mai multe linii:
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\ n)?\n?)+)*)$/
La această regex învechită, numele domeniului este limitat la 3 caractere, ceea ce nu acoperă toate domeniile disponibile:
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
Codurile poștale
Coduri poștale australiene:
/^[0-9]{4}/
Coduri poștale braziliene
/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/
Coduri poștale canadiene
/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/
Coduri poștale din SUA
/^[0-9]{5}([- /]?[0-9]{4})?$/
Pentru ca codul poștal să înceapă cu zero, utilizați:
/^[0-9]{5}(?:-[0-9]{4})?$/
Codurile poștale din Marea Britanie
/^[AZ][AZ]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i
Rețineți că acest lucru nu este foarte exact, iar o validare mai exactă este mult mai complexă. De exemplu, consultați StackOverflow answer și Wikipedia pentru mai multe informație.
Coduri poștale franceze
/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)| (^98[46-8]\d{2}$)/
Expresia de mai sus este foarte precisă și va verifica dacă există sau nu Departamentul francez (primele două cifre), inclusiv departamentele de peste mări și teritoriile de peste mări (DOM-TOM).
Numere de telefon
Numere de telefon din SUA
/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d {2}[- ]?\d{4}$/
sau
/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\ )\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/
Această a doua opțiune se va potrivi cu toate numerele de telefon din Canada și SUA care includ simboluri fără cifre, inclusiv:
. ( ) - (spațiu)
Acest lucru vă va permite să potriviți numere de telefon care seamănă mai jos:
- (555)555 5555
- 555.555.5555
- 555 555 5555
- (555)-555-5555
- 555-555-5555
- 555555555
Numere de telefon australiene
Următoarele modele se potrivesc cu toate diferitele numere de telefon mobil și fix din Australia, inclusiv cu prefixul de țară „+61”:
- (02) 9123 6535
- 03 1234-5345
- 0412 345 678
- + 61 2 3456 789
Dar nu:
- 234 3450 234
- a234 534 3432
- 134567
- 123456789013
Parantezele, spațiile albe și cratimele sunt ignorate.
Versiunile „Foarte precise:” enumerate aici se potrivesc cu primele patru sau cinci cifre dintr-un număr pentru a se asigura că sunt numere australiene valide.
„Nu foarte precis:” se potrivește numai cu prima și a doua cifră, așa că poate permite numere invazi.
Toate numerele de telefon australiene (mobil și fix - este necesar un prefix)
Foarte precis:
/^\(?(?:\+?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})$/
Nu foarte precis:
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/
Toate numerele de telefon australiene (numai liniile fixe - este necesar prefixul)
Foarte precis:
/^\(?(?:\+?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}$/
Nu foarte precis:
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/
Numere de telefon fix din New South Wales (prefix opțional)
Foarte precis:
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[ 0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/
Nu foarte precis:
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/
Numere de telefon fix din Victoria și Tasmania (prefix opțional)
Foarte precis:
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/
Nu foarte precis:
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/
Numere de telefon fix din Queensland (prefix opțional)
Foarte precis:
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -] ?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/
Nu foarte precis:
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/
Numere de telefon fix Australia de Sud, Teritoriul de Nord, Australia de Vest (prefix opțional)
Foarte precis:
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9] [0-9])$/
Nu foarte precis:
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/
Numai numere de telefon mobil australiene
Foarte precis:
/^(?:\+?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}$/
Nu foarte precis:
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/
Număr de telefon belgian
/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2 }){2}$/
Număr de telefon mobil belgian
/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/
Număr de telefon francez
/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/
Număr de telefon mobil francez
/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/
Număr de telefon din Luxemburg
/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/
Număr de telefon mobil din Luxemburg
/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/
Marcă germană (cu plus sau minus opțional)
/^[1-6]{1}[\+|\-]?$/
Validarea vârstei
Exemplu: Vârsta 20-99
/([2-9][0-9])/
Exemplu: Vârsta 18-35
/(1[8-9]|2[0-9]|3[0-5])/
Exemplu: Vârsta 19-65
/^(1[8-9]|[2-5][0-9]|6[0-5])$/
Validarea numărului
Numerele de la 1 la 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}$/ face la fel ca mai sus, dar ar trebui să ruleze puțin mai repede
Numerele de la 1 la 999, de la 1.000 la 999.999 la 999.999.999
/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/
Acceptă numere de la 1 la 999, de la 1.000 la 999.999 la 999.999.999, dar respinde numere precum 999.1.1, 94.22.22, 999.1.22, 999.11.1, 933.
Validarea numerelor cu zecimală opțională (pentru preț)
Acceptă numere de la 0 la 199, cu 2 zecimale opțional:
/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9]) ?$/
Validarea numărului cu separator de mii
Spațiu ca separator, fără minus
/^(?!0)\d{1,3}(\ \d{3})*$/
Punctul ca separator, minus permis
/^-?(?!0)\d{1,3}(\.\d{3})*$/
Forțează două zecimale și acceptă numere de la 1,00 la 999.999.999,00 cu o virgulă opțională care delimitează mii/milioane inclusiv toate următoarele: 1,00, 1,000,00, 12,345,67, 12345,02, 603,45,02, 60,60, 60, 62, 6, 6 123456789.00 dar nu 1 ,23.00, 12,3.4 sau 1234,43.04
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Asemănător celor de mai sus: Forțează două puncte zecimale, dar acceptă un „0” înainte de separatorul zecimal ",".
/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
La fel ca mai sus, dar cele două zecimale sunt opționale:
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2}) ?$/
Luna (1-12)
Dacă doriți să cereți luna în care s-a născut o persoană, puteți valida introducerea după cum urmează:
/^[0]*[1-9]$|^[0]*1[0-2]$/
Lățimea minimă (setată la 3 în acest exemplu)
/^.{3,}$/
Moneda
Moneda SUA (semnul dolarului și cenți opțional)
/^\$?\d+(\.(\d{2}))?$/
Verificați utilizarea virgulelor:
/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/
Prețul elvețian
Un număr cu două numere zecimale după virgulă, iar ultima este fie 5, fie 0:
/^(\d+)(\.\d(05)?)?$/
Validați scorul
1-10
/^[1-9]{1}$|^10$/
1-100
/^[1-9]?[0-9]{1}$|^100$/
Validare text
The multiple short text question type doesn't support minimum or maximum answers at the moment. One way around this is to use a long free text question type with a regular expression.
The below expression tests for at least one word per line for at least 3 lines and no more than 10 lines:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is
If you want, say five words per line, you could change the first and last star/asterisk to {4,}:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is
If you wanted one or more words per line (between line 1 and line 5), you can change the content located within the last curly braces to 0,4 (note you use 0 because you're already matching the first line).
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is
Word count
The following restricts the number of words allowed to a minimum of 1 and a maximum of 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
To increase the minimum change the zero part of {0,199}.
To increase or decrease the maximum change the "199" part of {0,199}.
Time validation
There are a number of ways to write time formats. Some of the possible options are 12 hour or 24 hour, with seconds or without. Although it is an option to use the date question type (it can also capture time) you can use the short free text question type with one of the below validation regular expressions.
The following three validation strings test for 24 hour time (in order of appearances) without seconds, with optional seconds lastly with seconds required:
/^(?:[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]$/
The following three match 12 hour time, as above with seconds, optional seconds and with seconds required:
/^(?">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))$/
The following three match either 12 or 24 hour time as above with seconds, optional seconds and with seconds required:
/^(?:(?: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 states
To validate for one state use the following (example is Texas):
- TX uppercase only:
/^(TX)$/
- tx lowercase only:
/^(tx)$/
- TX upper or lowercase:
/^([T|t][X|x])$/
Profanity Filter
To filter profanity words from an answer:
/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/
Replace "ENTERPROFANITYHERE" with your bad word.
The \b will allow passing of words such as "assassination" and "hello" if you enter "ass" or "hell" as your profanity word. This also works if you are trying to omit other words, names etc. from answers.
Helpful links
In the beginning of this wiki section, we recommend you to use https://regex101.com/ to test/create regular expressions. You can also use https://www.regextester.com/ to create expressions in case you are unhappy about the first option. You can use https://extendsclass.com/regex-tester.html to visualize regular expressions.