x

Hlavní kapitoly

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Rychlý průvodce - LimeSurvey 3.0+
  3. Instalace - LimeSurvey CE
  4. Jak vytvořit dobrý průzkum (návod)
  5. Začínáme
  6. Správa LimeSurvey
  7. Průzkumy - úvod
  8. Nastavení průzkumu
  9. Menu průzkumu
  10. Struktura průzkumu
  11. Otázky - úvod
  12. Skupiny otázek - úvod
  13. Průzkumy - správa
  14. Možnosti panelu nástrojů průzkumu
  15. Vícejazyčný průzkum
  16. ExpressionScript Engine - Rychlý průvodce
  17. Nezařazené a pokročilé funkce
  18. Obecné FAQ
  19. Řešení potíží
  20. Řešení a obejití problémů
  21. Licence
  22. Záznam změn verzí
  23. Zásuvné moduly
 Actions

Používání regulárních výrazů

From LimeSurvey Manual

Tato stránka mohla být přeložena strojově a může obsahovat chyby. Zobrazit anglický originál · Vylepšit tento překlad
This page is a translated version of the page Using regular expressions and the translation is 100% complete.

Regulární výrazy musí začínat a končit lomítkem ("/"). Dobrou knihovnu regulárních výrazů najdete na https://www.regexlib.net/. Tyto vzory téměř vždy fungují, pokud jsou obklopeny lomítky.

Pro otestování regulárního výrazu můžete použít tento nástroj pro testování regulárních výrazů.

Abychom vylepšili tuto sekci wiki, prosíme vás, abyste přidali své úspěšně otestované regulární výrazy a pomohli tak novým (potenciálním) uživatelům LimeSurvey lépe pochopit tuto funkci.
  Pozor : Upozorňujeme, že všechny níže uvedené příklady jsou zapsány na jednom řádku!



Důležité: regulární výrazy v podmínkách

Upozorňujeme, že při použití regulárních výrazů v editoru podmínek NEZADÁVEJTE úvodní a koncové lomítko.


Ověření e-mailu

Aktualizace (12/2018): Protože doménová jména dnes mohou obsahovat nejen speciální znaky jako „ü“, ale také více než 3 znaky v doméně, například .tech nebo .company, níže uvedený regulární výraz pro e-mail pouze kontroluje, zda zadaná e-mailová adresa obsahuje „@“ a „.“.

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

Pokud chcete ověřit jednu adresu na řádek ve víceřádkovém poli typu dlouhý text:

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

U tohoto zastaralého regulárního výrazu je doménové jméno omezeno na 3 znaky, což nepokrývá všechny dostupné domény:

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

PSČ

Australská PSČ:

/^[0-9]{4}/

Brazilská 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})?$/

Aby PSČ mohlo začínat nulou, použijte:

/^[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 není příliš přesný a přesnější ověření je mnohem složitější. Další informace naleznete například v odpovědi na StackOverflow a na Wikipedii.

Francouzská PSČ

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

Výše uvedený výraz je velmi přesný a zkontroluje, zda francouzský departement existuje (první dvě číslice), včetně zámořských departementů a zámořských území (DOM-TOM).


Telefonní čísla

Americká telefonní čísla

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

nebo

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

Tato druhá možnost odpovídá všem kanadským a americkým telefonním číslům, která obsahují nečíselné symboly, mimo jiné:

 . ( ) - (space)

Umožní vám zachytit telefonní čísla podobná těmto:

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

Australská telefonní čísla

Následující vzory odpovídají nejrůznějším australským mobilním i pevným telefonním číslům, včetně těch s mezinárodní předvolbou „+61“:

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

Ale ne:

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

Závorky, mezery a pomlčky se ignorují.

Verze označené „Velmi přesné:“ uvedené zde porovnávají první čtyři nebo pět číslic čísla, aby bylo zajištěno, že jde o platná australská čísla.

Verze označené „Méně přesné:“ porovnávají pouze první a druhou číslici, takže mohou povolit neplatná čísla.

Všechna australská telefonní čísla (mobilní i pevné linky – předvolba je povinná)

Velmi přesné:

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

Méně přesné:

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

Všechna australská telefonní čísla (pouze pevné linky – předvolba je povinná)

Velmi přesné:

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

Méně přesné:

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

Telefonní čísla pevných linek v Novém Jižním Walesu (předvolba je volitelná)

Velmi přesné:

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

Méně přesné:

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

Telefonní čísla pevných linek ve Victorii a Tasmánii (předvolba je volitelná)

Velmi přesné:

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

Méně přesné:

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

Telefonní čísla pevných linek v Queenslandu (předvolba je volitelná)

Velmi přesné:

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

Méně přesné:

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

Telefonní čísla pevných linek v Jižní Austrálii, Severním teritoriu a Západní Austrálii (předvolba je volitelná)

Velmi přesné:

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

Méně přesné:

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

Pouze australská čísla mobilních telefonů

Velmi přesné:

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

Méně přesné:

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

Belgické telefonní číslo

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

Belgické číslo mobilního telefonu

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

Francouzské telefonní číslo

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

Francouzské číslo mobilního telefonu

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

Lucemburské telefonní číslo

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

Lucemburské číslo mobilního telefonu

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

Německé školní známky (s volitelným plusem nebo mínusem)

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


Ověření věku

Příklad: věk 20–99

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

Příklad: věk 18–35

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

Příklad: věk 19–65

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


Ověření čísla

Čí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}$/

Přijímá čísla od 1 do 999, od 1.000 do 999.999 až 999.999.999, ale odmítá čísla jako 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333

Ověření čísla s volitelnou desetinnou částí (pro cenu)

Přijímá čísla od 0 do 199 s volitelnými 2 desetinnými místy:

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

Ověření čísla s oddělovačem tisíců

Mezera jako oddělovač, bez znaménka minus

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

Tečka jako oddělovač, znaménko minus povoleno

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

Vynutí dvě desetinná místa a přijímá čísla od 1.00 do 999,999,999.00 s volitelnou čárkou oddělující tisíce/miliony, včetně všech následujících: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00 ale ne 1,23.00, 12,3.4 nebo 1234,43.04

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

Podobné jako výše: vynutí dvě desetinná místa, ale přijímá „0“ před desetinným oddělovačem „,“.

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

Stejné jako výše, ale dvě desetinná místa jsou volitelná:

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

Měsíc (1-12)

Pokud se chcete zeptat na měsíc narození, můžete vstup ověřit následujícím způsobem:

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

Minimální délka (v tomto příkladu nastaveno na 3)

/^.{3,}$/


Měna

Americká měna (znak dolaru a centy jsou volitelné)

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

Kontrola použití čárky:

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

Švýcarská cena

Číslo se dvěma desetinnými místy za desetinnou tečkou, z nichž poslední je buď 5, nebo 0:

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


Ověření skóre

1-10

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

1-100

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


Ověření textu

Typ otázky Vícenásobné krátké texty v současné době nepodporuje minimum ani maximum odpovědí. Jedním z řešení je použít typ otázky Dlouhý text s regulárním výrazem.

Níže uvedený výraz kontroluje, zda je na řádku alespoň jedno slovo, a to alespoň na 3 řádcích a nejvýše na 10 řádcích:

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

Pokud chcete například pět slov na řádek, můžete změnit první a poslední hvězdičku na {4,}:

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

Pokud chcete jedno nebo více slov na řádek (mezi řádkem 1 a řádkem 5), můžete změnit obsah v posledních složených závorkách na 0,4 (všimněte si, že používáte 0, protože první řádek se již porovnává).

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

Počet slov

Následující výraz omezuje počet povolených slov na minimum 1 a maximum 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Chcete-li zvýšit minimum, změňte nulovou část v {0,199}.

Chcete-li zvýšit nebo snížit maximum, změňte část „199“ v {0,199}.

Ověření času

Formáty času lze zapsat mnoha způsoby. Mezi možnosti patří 12hodinový nebo 24hodinový formát, se sekundami nebo bez nich. Ačkoli lze použít typ otázky Datum (umí zachytit i čas), můžete použít typ otázky Krátký text s jedním z níže uvedených regulárních výrazů pro ověření.

Následující tři řetězce pro ověření kontrolují 24hodinový čas (v pořadí zobrazení) bez sekund, s volitelnými sekundami a nakonec 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]$/

Následující tři řetězce odpovídají 12hodinovému času, stejně jako výše: se sekundami, s volitelný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))$/

Následující tři řetězce odpovídají 12hodinovému nebo 24hodinovému času, stejně jako výše: se sekundami, s volitelný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])$/

Státy USA

Chcete-li ověřit jeden stát, použijte následující výraz (příklad je pro Texas):

  • TX pouze velká písmena:
    /^(TX)$/
    
  • tx pouze malá písmena:
    /^(tx)$/
    
  • TX velká nebo malá písmena:
    /^([T|t][X|x])$/
    


Filtr vulgarismů

Chcete-li z odpovědi odfiltrovat vulgární slova:

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

Nahraďte "ENTERPROFANITYHERE" svým nevhodným slovem.

Znak \b umožní projít slovům, jako jsou "assassination" a "hello", pokud jako vulgární slovo zadáte "ass" nebo "hell". Stejně to funguje, pokud chcete z odpovědí vyloučit jiná slova, jména apod.


Užitečné odkazy

Na začátku této wiki sekce doporučujeme k testování a vytváření regulárních výrazů použít https://regex101.com/. Pokud vám první možnost nevyhovuje, můžete k vytvoření výrazů použít také https://www.regextester.com/. K vizualizaci regulárních výrazů můžete použít https://extendsclass.com/regex-tester.html.