Actions

Uporaba regularnih izrazov

From LimeSurvey Manual

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

Regularni izrazi se morajo začeti in končati s poševnico naprej ("/"). Dobro knjižnico regularnih izrazov najdete na http://www.regexlib.net/. Ti vzorci bodo skoraj vedno delovali, če so obkroženi s poševnicami.

Za testiranje svojega regularnega izraza lahko uporabite ta preizkuševalec regularnih izrazov.

Template:Opomba

  Pozor : Upoštevajte, da so vsi spodnji primeri napisani v eni vrstici!



Pomembno: Regularni izrazi v pogojih

Upoštevajte, da pri uporabi regularnih izrazov v urejevalniku pogojev NE vključite začetne in končne poševnice.


E-poštno preverjanje

Posodobitev (12/2018): Ker dandanes imena domen ne morejo vsebovati samo posebnih znakov, kot je »ü«, ampak uporabljajo tudi več kot 3 znake kot ime domene, kot je .tech ali .company, spodnji e-poštni regularni izraz preveri samo, če sta »@« in ».« obstaja znotraj vnesenega elektronskega naslova.

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

Če želite potrditi en naslov na vrstico, v večvrstičnem dolgem besedilnem polju:

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

Pri tem zastarelem regularnem izrazu je ime domene omejeno na 3 znake, kar ne pokriva vseh razpoložljivih domen:

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

Poštne številke

Avstralske poštne številke:

/^[0-9]{4}/

Brazilske poštne številke

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

Kanadske poštne številke

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

Poštne številke ZDA

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

Če želite, da se poštna številka začne z ničlo, uporabite:

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

Poštne številke Združenega kraljestva

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

Upoštevajte, da to ni zelo natančno, natančnejša validacija pa je veliko bolj zapletena. Na primer, glejte StackOverflow odgovor in Wikipedia za več informacije.

Francoske poštne številke

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

Zgornji izraz je zelo natančen in bo preveril, ali obstaja francoski departma (prvi dve števki), vključno s čezmorskimi departmaji in čezmorskimi ozemlji (DOM-TOM).


Telefonske številke

Ameriške telefonske številke

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

oz

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

Ta druga možnost se bo ujemala z vsemi telefonskimi številkami v Kanadi in ZDA, ki vključujejo simbole brez številk, vključno z:

. ( ) - (presledek)

To vam bo omogočilo ujemanje telefonskih številk, ki so podobne spodnjim:

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

Avstralske telefonske številke

Naslednji vzorci se ujemajo z vsemi različnimi avstralskimi mobilnimi in stacionarnimi telefonskimi številkami, vključno s predpono države "+61":

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

Ampak ne:

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

Oklepaji, presledki in vezaji so prezrti.

Različice »Zelo natančno:«, navedene tukaj, se ujemajo s prvimi štirimi ali petimi števkami v številki, da se zagotovi, da so veljavne avstralske številke.

»Ni zelo natančno:« se ujema samo s prvo in drugo števko, zato lahko dopušča neveljavne številke.

Vse avstralske telefonske številke (mobilne in stacionarne – območna koda je potrebna)

Zelo natančno:

/^\(?(?:\+?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})$/

Ni zelo natančno:

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

Vse avstralske telefonske številke (samo stacionarne telefonije - območna koda je potrebna)

Zelo natančno:

/^\(?(?:\+?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}$/

Ni zelo natančno:

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

Stacionarne telefonske številke Novega Južnega Walesa (območna koda ni obvezna)

Zelo natančno:

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

Ni zelo natančno:

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

Stacionarne telefonske številke Viktorije in Tasmanije (območna koda ni obvezna)

Zelo natančno:

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

Ni zelo natančno:

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

Stacionarne telefonske številke Queenslanda (območna koda ni obvezna)

Zelo natančno:

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

Ni zelo natančno:

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

Stacionarne telefonske številke Južne Avstralije, Severnega ozemlja, Zahodne Avstralije (območna koda ni obvezna)

Zelo natančno:

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

Ni zelo natančno:

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

Samo avstralske številke mobilnih telefonov

Zelo natančno:

/^(?:\+?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}$/

Ni zelo natančno:

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

Belgijska telefonska številka

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

Belgijska številka mobilnega telefona

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

Francoska telefonska številka

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

Francoska številka mobilnega telefona

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

Luksemburška telefonska številka

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

Številka mobilnega telefona v Luksemburgu

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

nemške marke (z neobveznim plusom ali minusom)

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


Preverjanje starosti

Primer: Starost 20–99

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

Primer: Starost 18-35

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

Primer: Starost 19–65

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


Potrditev številke

Številke 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}$/ naredi enako kot zgoraj, vendar bi moralo delovati nekoliko hitreje

Številke od 1 do 999, 1.000 do 999.999 do 999.999.999

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

Sprejema številke od 1 do 999, 1.000 do 999.999 do 999.999.999, vendar zavrača številke, kot so 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333

Preverjanje števila z neobvezno decimalko (za ceno)

Sprejema števila od 0 do 199, z 2 decimalkama neobvezno:

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

Preverjanje števila z ločilom tisoč

Presledek kot ločilo, brez minusa

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

Pika kot ločilo, dovoljen minus

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

Vsili dve decimalni vejici in sprejme števila od 1,00 do 999.999.999,00 z izbirno vejico, ki loči tisoče/milijone vključno z vsemi naslednjimi: 1.00, 1.000,00, 12.345,67, 12345,02, 123.456.468,00, 1234566.00 , 123456789,00 vendar ne 1 ,23.00, 12,3.4 ali 1234,43.04

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

Podobno kot zgoraj: Vsili dve decimalni vejici, vendar sprejme "0" pred decimalnim ločilom ",".

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

Enako kot zgoraj, vendar dve decimalni vejici nista obvezni:

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

Mesec (1-12)

Če želite vprašati za mesec rojstva osebe, lahko potrdite vnos na naslednji način:

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

Najmanjša širina (v tem primeru nastavljena na 3)

/^.{3,}$/


Valuta

Valuta ZDA (znak za dolar in centi neobvezno)

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

Preverite uporabo vejice:

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

švicarska cena

Število z dvema decimalnima številkama za decimalno vejico, od katerih je zadnja 5 ali 0:

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


Potrdi rezultat

1-10

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

1-100

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


Preverjanje besedila

vrsta vprašanj z več kratkimi besedili trenutno ne podpira minimalnih ali maksimalnih odgovorov. Eden od načinov za to je uporaba vrsta vprašanja z dolgim prostim besedilom z regularnim izrazom.

Spodnji izrazi testirajo vsaj eno besedo na vrstico za najmanj 3 vrstice in ne več kot 10 vrstic:

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

Če želite, izgovorite pet besed na vrstico, lahko spremenite prvo in zadnjo zvezdico v {4,}:

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

Če želite eno ali več besed na vrstico (med vrstico 1 in vrstico 5), lahko spremenite vsebino v zadnjih zavitih oklepajih v 0,4 (upoštevajte, da uporabljate 0, ker se že ujemate prva vrstica).

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

Število besed

Naslednje omejuje dovoljeno število besed na najmanj 1 in največ 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Če želite povečati najmanjšo vrednost, spremenite ničelni del {0,199}.

Če želite povečati ali zmanjšati največjo vrednost, spremenite del "199" v {0,199}.

Časovna validacija

Obstaja več načinov za pisanje časovnih formatov. Nekatere od možnih možnosti so 12-urni ali 24-urni, s sekundami ali brez. Čeprav obstaja možnost uporabe vrsta vprašanja z datumom (lahko zajame tudi čas), lahko uporabite vrsta vprašanja s kratkim prostim besedilom z enim od spodnje validacijske regularne izraze.

Naslednji trije potrditveni nizi testirajo 24-urni čas (po vrstnem redu pojavljanja) brez sekund, z neobveznimi sekundami nazadnje z zahtevanimi sekundami:

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

Naslednji trije se ujemajo z 12-urnim časom, kot zgoraj s sekundami, neobveznimi sekundami in zahtevanimi sekundami:

/^(?">00:[0-5][0-9] (?:dopoldne|dopoldan)|(?: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])? (?:dopoldne|dopoldne)|(?: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])? (?:popoldan|popoldne))$/
/^(?:00:[0-5][0-9]:[0-5][0-9] (?:dopoldne|dopoldan)|(?: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] (?:popoldan|popoldne))$/

Naslednji trije se ujemajo z 12- ali 24-urnim časom kot zgoraj s sekundami, neobveznimi sekundami in zahtevanimi sekundami:

/^(?:(?:00:[0-5][0-9] (?:dopoldne|dopoldan)|(?:0[1-9]|1[01]):[0-5][ 0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:popoldan|popoldne))|(?:[01][0-9] |2[0-3]):[0-5][0-9])$/
/^(?:(?:00:[0-5][0-9](?[0-5][0-9])? (?:dopoldne|dopoldne)|(?: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])? (?:popoldan|popoldne))|(?:[01][0-9]|2[0-3]) :[0-5][0-9](?[0-5][0-9])?)$/
/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:dopoldne|dopoldne)|(?: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] (?:popoldan|popoldne))|(?:[01][0-9]|2[0-3]):[0-5][0- 9]:[0-5][0-9])$/

zvezne države ZDA

Za preverjanje za eno državo uporabite naslednje (primer je Teksas):

  • TX samo z velikimi črkami:
     /^(TX)$/
    
  • tx samo male črke:
     /^(tx)$/
    
  • TX velike ali male črke:
     /^([T|t][X|x])$/
    


Filter za preklinjanje

Če želite filtrirati psovke iz odgovora:

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

Zamenjajte "ENTER PROFANITYHERE" s svojo slabo besedo.

\b bo dovolil podajanje besed, kot sta "atentat" in "zdravo", če kot psovko vnesete "rit" ali "pekel". To deluje tudi, če poskušate iz odgovorov izpustiti druge besede, imena itd.


Koristne povezave

Na začetku tega razdelka wiki vam priporočamo, da uporabite https://regex101.com/ za testiranje/ustvarjanje regularnih izrazov. Za ustvarjanje izrazov lahko uporabite tudi https://www.regextester.com/, če niste zadovoljni s prvo možnostjo. Za vizualizacijo regularnih izrazov lahko uporabite https://extendsclass.com/regex-tester.html.