x

Hlavné kapitoly

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Rýchly sprievodca - LimeSurvey 3.0+
  3. Inštalácia - LimeSurvey CE
  4. Ako vytvoriť dobrý prieskum (príručka)
  5. Začíname
  6. Správa LimeSurvey
  7. Prieskumy - úvod
  8. Nastavenia prieskumu
  9. Menu prieskumu
  10. Štruktúra prieskumu
  11. Otázky – úvod
  12. Skupiny otázok - úvod
  13. Prieskumy - správa
  14. Možnosti panela nástrojov prieskumu
  15. Viacjazyčný prieskum
  16. ExpressionScript Engine - Príručka rýchleho štartu
  17. Nezaradené a pokročilé funkcie
  18. Všeobecné časté otázky
  19. Riešenie problémov
  20. Riešenia a obchádzky
  21. Licencia
  22. Záznam zmien verzií
  23. Doplnky
 Actions

Používanie regulárnych výrazov

From LimeSurvey Manual

Táto stránka mohla byť preložená strojovo a môže obsahovať chyby. Zobraziť anglický originál · Vylepšiť tento preklad
This page is a translated version of the page Using regular expressions and the translation is 100% complete.

Regulárne výrazy musia začínať a končiť lomkou ("/"). Dobrú knižnicu regulárnych výrazov nájdete na https://www.regexlib.net/. Tieto vzory takmer vždy fungujú, ak sú obklopené lomkami.

Na otestovanie regulárneho výrazu môžete použiť tento nástroj na testovanie regulárnych výrazov.

Aby sme vylepšili túto časť wiki, prosíme vás, pridajte svoje úspešne otestované regulárne výrazy, aby sme novým (potenciálnym) používateľom LimeSurvey poskytli lepšie pochopenie tejto funkcie.
  Upozornenie : Upozorňujeme, že všetky nižšie uvedené príklady sú napísané na jednom riadku!



Dôležité: Regulárne výrazy v podmienkach

Upozorňujeme, že pri používaní regulárnych výrazov v editore podmienok NEZADÁVAJTE úvodnú ani záverečnú lomku.


Validácia e-mailu

Aktualizácia (12/2018): Keďže doménové mená môžu dnes obsahovať nielen špeciálne znaky ako „ü“, ale aj viac ako 3 znaky v názve domény, napríklad .tech alebo .company, nižšie uvedený regulárny výraz pre e-mail kontroluje iba to, či sa v zadanej e-mailovej adrese nachádzajú znaky „@“ a „.“.

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

Ak chcete validovať jednu adresu na riadok vo viacriadkovom poli s dlhým textom:

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

V tomto zastaranom regulárnom výraze je doménové meno obmedzené na 3 znaky, čo nepokrýva všetky dostupné domény:

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

PSČ

Austrálske PSČ:

/^[0-9]{4}/

Brazílske PSČ

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

Kanadské PSČ

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

Americké PSČ

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

Ak má PSČ začínať nulou, použite:

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

Britské PSČ

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

Upozorňujeme, že tento výraz nie je veľmi presný a presnejšia validácia je oveľa zložitejšia. Ďalšie informácie nájdete napríklad v odpovedi na StackOverflow a na Wikipédii.

Francúzske PSČ

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

Vyššie uvedený výraz je veľmi presný a skontroluje, či francúzsky departement existuje (prvé dve číslice), vrátane zámorských departementov a zámorských území (DOM-TOM).


Telefónne čísla

Americké telefónne čísla

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

alebo

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

Táto druhá možnosť zodpovedá všetkým kanadským a americkým telefónnym číslam, ktoré obsahujú nečíselné symboly, vrátane:

 . ( ) - (space)

Umožní vám to zodpovedať telefónnym číslam, ktoré vyzerajú takto:

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

Austrálske telefónne čísla

Nasledujúce vzory zodpovedajú všetkým rôznym austrálskym číslam mobilných telefónov a pevných liniek, vrátane čísel s predvoľbou krajiny „+61“:

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

Ale nie:

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

Zátvorky, medzery a spojovníky sa ignorujú.

Verzie označené „Veľmi presné:“ uvedené tu kontrolujú prvé štyri alebo päť číslic v čísle, aby sa zabezpečilo, že ide o platné austrálske čísla.

Verzie označené „Menej presné:“ kontrolujú iba prvú a druhú číslicu, preto môžu povoliť neplatné čísla.

Všetky austrálske telefónne čísla (mobilné aj pevné linky - predvoľba je povinná)

Veľmi presné:

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

Menej presné:

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

Všetky austrálske telefónne čísla (iba pevné linky - predvoľba je povinná)

Veľmi presné:

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

Menej presné:

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

Telefónne čísla pevných liniek v Novom Južnom Walese (predvoľba je voliteľná)

Veľmi presné:

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

Menej presné:

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

Telefónne čísla pevných liniek vo Victorii a na Tasmánii (predvoľba je voliteľná)

Veľmi presné:

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

Menej presné:

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

Telefónne čísla pevných liniek v Queenslande (predvoľba je voliteľná)

Veľmi presné:

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

Menej presné:

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

Telefónne čísla pevných liniek v Južnej Austrálii, Severnom teritóriu a Západnej Austrálii (predvoľba je voliteľná)

Veľmi presné:

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

Menej presné:

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

Iba austrálske mobilné telefónne čísla

Veľmi presné:

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

Menej presné:

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

Belgické telefónne číslo

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

Belgické mobilné telefónne číslo

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

Francúzske telefónne číslo

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

Francúzske mobilné telefónne číslo

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

Luxemburské telefónne číslo

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

Luxemburské mobilné telefónne číslo

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

Nemecké známky (s voliteľným plusom alebo mínusom)

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


Validácia veku

Príklad: vek 20 – 99

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

Príklad: vek 18 – 35

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

Príklad: vek 19 – 65

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


Validácia čísel

Čísla 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

Čísla od 1 do 999, od 1.000 do 999.999 až 999.999.999

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

Prijíma čísla od 1 do 999, od 1.000 do 999.999 až 999.999.999, ale zamieta čísla ako 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333

Validácia čísla s voliteľnou desatinnou časťou (pre cenu)

Prijíma čísla od 0 do 199 s voliteľnými 2 desatinnými miestami:

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

Validácia čísla s oddeľovačom tisícov

Medzera ako oddeľovač, bez znamienka mínus

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

Bodka ako oddeľovač, znamienko mínus povolené

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

Vynucuje dve desatinné miesta a prijíma čísla od 1.00 do 999,999,999.00 s voliteľnou čiarkou oddeľujúcou tisíce/milióny, vrátane všetkých nasledujúcich: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00, ale nie 1,23.00, 12,3.4 alebo 1234,43.04

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

Podobné ako vyššie: vynucuje dve desatinné miesta, ale prijíma „0“ pred oddeľovačom desatinných miest „,“.

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

Rovnako ako vyššie, ale dve desatinné miesta sú voliteľné:

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

Mesiac (1-12)

Ak sa chcete opýtať na mesiac narodenia osoby, môžete vstup overiť takto:

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

Minimálna šírka (v tomto príklade nastavená na 3)

/^.{3,}$/


Mena

Americká mena (znak dolára a centy sú voliteľné)

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

Kontrola používania čiarky:

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

Švajčiarska cena

Číslo s dvoma desatinnými miestami za desatinnou bodkou, pričom posledné z nich je buď 5, alebo 0:

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


Validácia skóre

1-10

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

1-100

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


Validácia textu

Typ otázky Viacnásobný krátky text momentálne nepodporuje minimálny ani maximálny počet odpovedí. Jedným z riešení je použiť typ otázky Dlhý text s regulárnym výrazom.

Nasledujúci výraz testuje aspoň jedno slovo na riadok pre minimálne 3 a maximálne 10 riadkov:

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

Ak chcete napríklad päť slov na riadok, môžete zmeniť prvú a poslednú hviezdičku na {4,}:

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

Ak chcete jedno alebo viac slov na riadok (medzi riadkom 1 a riadkom 5), môžete obsah v poslednej dvojici zložených zátvoriek zmeniť na 0,4 (všimnite si, že používate 0, pretože prvý riadok sa už zhoduje).

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

Počet slov

Nasledujúci výraz obmedzuje počet povolených slov na minimum 1 a maximum 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Ak chcete zvýšiť minimum, zmeňte nulovú časť v {0,199}.

Ak chcete zvýšiť alebo znížiť maximum, zmeňte časť „199“ v {0,199}.

Validácia času

Formáty času možno zapísať viacerými spôsobmi. Medzi možnosti patrí 12-hodinový alebo 24-hodinový formát, so sekundami alebo bez nich. Hoci je možné použiť typ otázky Dátum (dokáže zachytiť aj čas), môžete použiť typ otázky Krátky text s jedným z nižšie uvedených regulárnych výrazov na validáciu.

Nasledujúce tri reťazce na validáciu testujú 24-hodinový čas (v uvedenom poradí) bez sekúnd, s voliteľnými sekundami a nakoniec s povinnými 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]$/

Nasledujúce tri sa zhodujú s 12-hodinovým časom, rovnako ako vyššie: so sekundami, s voliteľnými sekundami a s povinnými sekundami:

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

Nasledujúce tri sa zhodujú s 12-hodinovým alebo 24-hodinovým časom, rovnako ako vyššie: so sekundami, s voliteľnými sekundami a s povinnými sekundami:

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

Štáty USA

Na overenie jedného štátu použite nasledujúci výraz (príklad je pre Texas):

  • TX iba veľké písmená:
    /^(TX)$/
    
  • tx iba malé písmená:
    /^(tx)$/
    
  • TX veľké alebo malé písmená:
    /^([T|t][X|x])$/
    


Filter vulgarizmov

Ak chcete z odpovede odfiltrovať vulgárne slová:

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

Nahraďte "ENTERPROFANITYHERE" svojím nevhodným slovom.

Znak \b umožní prejsť slovám ako "assassination" a "hello", ak ako vulgárne slovo zadáte "ass" alebo "hell". Funguje to aj vtedy, ak chcete z odpovedí vylúčiť iné slová, mená a podobne.


Užitočné odkazy

Na začiatku tejto wiki sekcie odporúčame na testovanie a vytváranie regulárnych výrazov použiť https://regex101.com/. Ak vám prvá možnosť nevyhovuje, môžete na vytváranie výrazov použiť aj https://www.regextester.com/. Na vizualizáciu regulárnych výrazov môžete použiť https://extendsclass.com/regex-tester.html.