Actions

Folosind expresii regulate

From LimeSurvey Manual

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

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.

Template:Notă

  Atenție : Rețineți că toate exemplele de mai jos sunt scrise pe un singur rând!



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

Tipul de întrebare text scurt multiplu nu acceptă răspunsuri minime sau maxime momentan. O modalitate de a evita acest lucru este să utilizați un Tip de întrebare text liber lung cu o expresie regulată.

Expresia de mai jos testează cel puțin un cuvânt pe rând pentru cel puțin 3 rânduri și nu mai mult de 10 rânduri:

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

Dacă doriți, spuneți cinci cuvinte pe rând, puteți schimba prima și ultima stea/asterisc la {4,}:

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

Dacă doriți unul sau mai multe cuvinte pe rând (între linia 1 și linia 5), puteți modifica conținutul situat în ultimele acolade la „0,4' (rețineți că utilizați 0 pentru că vă potriviți deja prima linie).

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

Numărul de cuvinte

Următoarele limitează numărul de cuvinte permis la minimum 1 și maxim 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Pentru a crește valoarea minimă, modificați partea zero a lui {0,199}.

Pentru a crește sau a reduce valoarea maximă, modificați partea „199” din {0,199}.

Validarea timpului

Există mai multe moduri de a scrie formate de timp. Unele dintre opțiunile posibile sunt 12 ore sau 24 de ore, cu secunde sau fără. Deși este o opțiune de a utiliza tipul de întrebare pentru dată (poate captura și timpul), puteți utiliza tipul de întrebare scurtă cu unul dintre expresiile regulate de validare de mai jos.

Următoarele trei șiruri de validare testează timp de 24 de ore (în ordinea apariției) fără secunde, cu secunde opționale în sfârșit cu secunde necesare:

/^(?:[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]$/

Următoarele trei se potrivesc timp de 12 ore, ca mai sus, cu secunde, secunde opționale și cu secunde necesare:

/^(?">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))$/

Următoarele trei potrivesc fie 12 sau 24 de ore ca mai sus cu secunde, secunde opționale și cu secunde necesare:

/^(?:(?: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])$/

Statele SUA

Pentru a valida pentru un stat, utilizați următoarele (exemplul este Texas):

  • TX numai majuscule:
     /^(TX)$/
    
  • tx numai litere mici:
     /^(tx)$/
    
  • TX majuscule sau minuscule:
     /^([T|t][X|x])$/
    


Filtru de profanitate

Pentru a filtra cuvintele vulgare dintr-un răspuns:

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

Înlocuiește „ENTERPROFANITYHERE” cu cuvântul tău rău.

\b va permite transmiterea unor cuvinte precum „asasinare” și „bună ziua” dacă introduceți „fund” sau „iad” ca cuvânt vulgar. Acest lucru funcționează și dacă încercați să omiteți alte cuvinte, nume etc. din răspunsuri.


Link-uri utile

La începutul acestei secțiuni wiki, vă recomandăm să utilizați https://regex101.com/ pentru a testa/crea expresii regulate. De asemenea, puteți utiliza https://www.regextester.com/ pentru a crea expresii în cazul în care sunteți nemulțumit de prima opțiune. Puteți utiliza https://extendsclass.com/regex-tester.html pentru a vizualiza expresiile regulate.