Korištenje regularnih izraza
From LimeSurvey Manual
Regularni izrazi moraju počinjati i završavati kosom crtom ("/"). Dobru zbirku regularnih izraza možete pronaći na https://www.regexlib.net/. Ovi uzorci gotovo uvijek rade ako su okruženi kosim crtama.
Za testiranje regularnog izraza možete koristiti ovaj alat za testiranje regularnih izraza.
Važno: regularni izrazi u uvjetima
Imajte na umu da pri korištenju regularnih izraza u uređivaču uvjeta NE smijete uključiti početnu i završnu kosu crtu.
Provjera e-pošte
Ažuriranje (12/2018): Budući da domene danas mogu sadržavati posebne znakove poput „ü“, ali i imati više od 3 znaka, npr. .tech ili .company, dolje navedeni regularni izraz za e-poštu provjerava samo postoje li znakovi „@“ i „.“ u unesenoj adresi e-pošte.
/^.+?@.+?\..+$/
Ako želite provjeriti jednu adresu po retku u višeretčanom polju tipa Dugi tekst:
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\n)?\n?)+)*)$/
Kod ovog zastarjelog regularnog izraza naziv domene ograničen je na 3 znaka, što ne pokriva sve dostupne domene:
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
Poštanski brojevi
Australski poštanski brojevi:
/^[0-9]{4}/
Brazilski poštanski brojevi
/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/
Kanadski poštanski brojevi
/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/
Poštanski brojevi SAD-a
/^[0-9]{5}([- /]?[0-9]{4})?$/
Ako poštanski broj treba počinjati nulom, koristite:
/^[0-9]{5}(?:-[0-9]{4})?$/
Poštanski brojevi Ujedinjenog Kraljevstva
/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i
Imajte na umu da ovo nije posve točno, a točnija provjera je mnogo složenija. Dodatne informacije potražite, na primjer, u odgovoru na StackOverflowu i na Wikipediji.
Francuski poštanski brojevi
/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/
Gornji izraz je vrlo precizan i provjerava postoji li francuski departman (prve dvije znamenke), uključujući prekomorske departmane i prekomorske teritorije (DOM-TOM).
Telefonski brojevi
Telefonski brojevi u SAD-u
/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/
ili
/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/
Ova druga opcija podudara se sa svim kanadskim i američkim telefonskim brojevima koji sadrže znakove koji nisu znamenke, uključujući:
. ( ) - (space)
Ovo će vam omogućiti podudaranje telefonskih brojeva koji izgledaju kao u nastavku:
- (555)555 5555
- 555.555.5555
- 555 555 5555
- (555)-555-5555
- 555-555-5555
- 555555555
Australski telefonski brojevi
Sljedeći uzorci podudaraju se sa svim raznim australskim brojevima mobilnih i fiksnih telefona, uključujući one s državnim prefiksom "+61":
- (02) 9123 6535
- 03 1234-5345
- 0412 345 678
- +61 2 3456 789
Ali ne i:
- 234 3450 234
- a234 534 3432
- 134567
- 123456789013
Zagrade, razmaci i crtice se zanemaruju.
Verzije označene kao 'Vrlo precizno:' provjeravaju prve četiri ili pet znamenki u broju kako bi se osiguralo da su to valjani australski brojevi.
Verzije označene kao 'Nije vrlo precizno:' provjeravaju samo prvu i drugu znamenku, pa mogu dopustiti nevaljane brojeve.
Svi australski telefonski brojevi (mobilni i fiksni - pozivni broj je obavezan)
Vrlo precizno:
/^\(?(?:\+?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})$/
Nije vrlo precizno:
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/
Svi australski telefonski brojevi (samo fiksni - pozivni broj je obavezan)
Vrlo precizno:
/^\(?(?:\+?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}$/
Nije vrlo precizno:
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/
Fiksni telefonski brojevi u Novom Južnom Walesu (pozivni broj nije obavezan)
Vrlo precizno:
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/
Nije vrlo precizno:
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/
Fiksni telefonski brojevi u Victoriji i Tasmaniji (pozivni broj nije obavezan)
Vrlo precizno:
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/
Nije vrlo precizno:
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/
Fiksni telefonski brojevi u Queenslandu (pozivni broj nije obavezan)
Vrlo precizno:
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/
Nije vrlo precizno:
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/
Fiksni telefonski brojevi u Južnoj Australiji, Sjevernom teritoriju i Zapadnoj Australiji (pozivni broj nije obavezan)
Vrlo precizno:
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/
Nije vrlo precizno:
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/
Samo australski mobilni telefonski brojevi
Vrlo precizno:
/^(?:\+?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}$/
Nije vrlo precizno:
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/
Belgijski telefonski broj
/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/
Belgijski broj mobitela
/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/
Francuski telefonski broj
/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/
Francuski broj mobitela
/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/
Luksemburški telefonski broj
/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/
Luksemburški broj mobitela
/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/
Njemačke ocjene (s neobaveznim plusom ili minusom)
/^[1-6]{1}[\+|\-]?$/
Provjera dobi
Primjer: dob 20-99
/([2-9][0-9])/
Primjer: dob 18-35
/(1[8-9]|2[0-9]|3[0-5])/
Primjer: dob 19-65
/^(1[8-9]|[2-5][0-9]|6[0-5])$/
Provjera brojeva
Brojevi od 1 do 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}$/ does the same as above but should run a little faster
Brojevi od 1 do 999, od 1.000 do 999.999 do 999.999.999
/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/
Prihvaća brojeve od 1 do 999, od 1.000 do 999.999 do 999.999.999, ali odbija brojeve poput 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333
Provjera broja s neobveznim decimalama (za cijenu)
Prihvaća brojeve od 0 do 199, s neobveznim dvjema decimalama:
/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/
Provjera broja s separatorom tisućica
Razmak kao separator, bez minusa
/^(?!0)\d{1,3}(\ \d{3})*$/
Točka kao separator, minus je dopušten
/^-?(?!0)\d{1,3}(\.\d{3})*$/
Nameće dvije decimale i prihvaća brojeve od 1.00 do 999,999,999.00 s neobveznim zarezom koji odvaja tisuće/milijune, uključujući sve sljedeće: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00 ali ne 1,23.00, 12,3.4 ili 1234,43.04
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Slično prethodnom: nameće dvije decimale, ali prihvaća „0” ispred decimalnog separatora „,”.
/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Isto kao gore, ali su dvije decimale neobvezne:
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/
Mjesec (1-12)
Ako želite pitati za mjesec rođenja osobe, unos možete provjeriti na sljedeći način:
/^[0]*[1-9]$|^[0]*1[0-2]$/
Minimalna širina (u ovom primjeru postavljena na 3)
/^.{3,}$/
Valuta
Američka valuta (znak dolara i centi neobvezni)
/^\$?\d+(\.(\d{2}))?$/
Provjera upotrebe zareza:
/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/
Švicarska cijena
Broj s dvije decimale iza decimalne točke, od kojih je posljednja 5 ili 0:
/^(\d+)(\.\d(05)?)?$/
Provjera ocjene
1-10
/^[1-9]{1}$|^10$/
1-100
/^[1-9]?[0-9]{1}$|^100$/
Provjera teksta
Vrsta pitanja Više kraćih tekstova trenutačno ne podržava minimalan ili maksimalan broj odgovora. Jedno od rješenja je upotreba vrste pitanja Slobodan dugačak tekst s regularnim izrazom.
Donji izraz provjerava postoji li barem jedna riječ po retku u najmanje 3, a najviše 10 redaka:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is
Ako želite, primjerice, pet riječi po retku, možete promijeniti prvu i posljednju zvjezdicu u {4,}:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is
Ako želite jednu ili više riječi po retku (između retka 1 i retka 5), sadržaj unutar posljednjih vitičastih zagrada možete promijeniti u 0,4 (napomena: koristi se 0 jer se prvi redak već podudara).
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is
Broj riječi
Sljedeće ograničava broj dopuštenih riječi na minimum od 1 i maksimum od 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Za povećanje minimuma promijenite nulu u {0,199}.
Za povećanje ili smanjenje maksimuma promijenite dio „199” u {0,199}.
Provjera vremena
Postoji nekoliko načina za zapis vremena. Neke od mogućih opcija su 12-satni ili 24-satni format, sa sekundama ili bez njih. Iako je moguće koristiti vrstu pitanja Datum (ona može bilježiti i vrijeme), možete koristiti i vrstu pitanja Slobodan tekst (kratak) s jednim od donjih regularnih izraza za provjeru.
Sljedeća tri niza za provjeru testiraju 24-satno vrijeme (redom): bez sekundi, s neobveznim sekundama i na kraju sa sekundama kao obveznima:
/^(?:[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]$/
Sljedeća tri podudaraju se s 12-satnim vremenom, kao gore: sa sekundama, s neobveznim sekundama i sa sekundama kao obveznima:
/^(?">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))$/
Sljedeća tri podudaraju se s 12-satnim ili 24-satnim vremenom, kao gore: sa sekundama, s neobveznim sekundama i sa sekundama kao obveznima:
/^(?:(?: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])$/
Savezne države SAD-a
Za provjeru jedne savezne države upotrijebite sljedeće (primjer je Teksas):
- TX samo velikim slovima:
/^(TX)$/
- tx samo malim slovima:
/^(tx)$/
- TX velikim ili malim slovima:
/^([T|t][X|x])$/
Filter za vulgarne riječi
Za filtriranje vulgarnih riječi iz odgovora:
/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/
Zamijenite "ENTERPROFANITYHERE" svojom nepoželjnom riječi.
Oznaka \b omogućit će prolazak riječi poput "assassination" i "hello" ako kao vulgarnu riječ unesete "ass" ili "hell". To funkcionira i ako želite izostaviti druge riječi, imena itd. iz odgovora.
Korisne poveznice
Na početku ovog odjeljka wikija preporučujemo da za testiranje/izradu regularnih izraza koristite https://regex101.com/. Ako vam prva opcija ne odgovara, za izradu izraza možete koristiti i https://www.regextester.com/. Za vizualizaciju regularnih izraza možete koristiti https://extendsclass.com/regex-tester.html.