x

Huvudkapitel

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Snabbstartsguide - LimeSurvey 3.0+
  3. Installation - LimeSurvey CE
  4. Så utformar du en bra enkät (guide)
  5. Komma igång
  6. Administrera LimeSurvey
  7. Enkäter - introduktion
  8. Enkätinställningar
  9. Enkätmeny
  10. Enkätens struktur
  11. Frågor - introduktion
  12. Frågegrupper - introduktion
  13. Enkäter - hantering
  14. Alternativ i enkätverktygsfältet
  15. Flerspråkig enkät
  16. ExpressionScript-motorn – Snabbstartsguide
  17. Okategoriserade och avancerade funktioner
  18. FAQ
  19. Felsökning
  20. Lösningar och genvägar
  21. Licens
  22. Ändringslogg för versioner
  23. Plugins
 Actions

Använda reguljära uttryck

From LimeSurvey Manual

Den här sidan kan ha maskinöversatts och kan innehålla fel. Visa det engelska originalet · Förbättra den här översättningen
This page is a translated version of the page Using regular expressions and the translation is 100% complete.

Reguljära uttryck måste börja och sluta med ett snedstreck ("/"). Du hittar ett bra bibliotek med reguljära uttryck på https://www.regexlib.net/. Dessa mönster fungerar nästan alltid om de omges av snedstreck.

För att testa ditt reguljära uttryck kan du använda detta testverktyg för reguljära uttryck.

För att förbättra det här wiki-avsnittet ber vi dig vänligen att lägga till dina framgångsrikt testade reguljära uttryck, så att nya (potentiella) LimeSurvey-användare får en bättre förståelse för funktionen.
  Observera : Observera att alla exemplen nedan är skrivna på en enda rad!



Viktigt: Reguljära uttryck i villkor

Observera att du INTE ska ta med det inledande och avslutande snedstrecket när du använder reguljära uttryck i villkorsredigeraren.


Validering av e-post

Uppdatering (12/2018): Eftersom domännamn numera inte bara kan innehålla specialtecken som "ü" utan också kan ha fler än 3 tecken i toppdomänen, som .tech eller .company, kontrollerar det nedanstående reguljära uttrycket för e-post endast att "@" och "." finns i den angivna e-postadressen.

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

Om du vill validera en adress per rad i ett textfält med flera rader (Lång text):

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

I det här föråldrade reguljära uttrycket är domännamnet begränsat till 3 tecken, vilket inte täcker alla tillgängliga domäner:

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

Postnummer

Australiska postnummer:

/^[0-9]{4}/

Brasilianska postnummer

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

Kanadensiska postnummer

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

Amerikanska postnummer

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

Om postnumret ska kunna börja med noll, använd:

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

Brittiska postnummer

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

Observera att detta inte är särskilt exakt, och en mer exakt validering är betydligt mer komplex. Se till exempel svaret på StackOverflow och Wikipedia för mer information.

Franska postnummer

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

Uttrycket ovan är mycket exakt och kontrollerar om det franska departementet finns (de två första siffrorna), inklusive utomeuropeiska departement och territorier (DOM-TOM).


Telefonnummer

Amerikanska telefonnummer

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

eller

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

Det andra alternativet matchar alla kanadensiska och amerikanska telefonnummer som innehåller andra tecken än siffror, bland annat:

 . ( ) - (space)

Det gör att du kan matcha telefonnummer som liknar nedanstående:

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

Australiska telefonnummer

Följande mönster matchar alla olika australiska mobil- och fasta telefonnummer, även med landsprefixet "+61":

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

Men inte:

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

Parenteser, blanksteg och bindestreck ignoreras.

Versionerna märkta 'Mycket exakt:' som anges här matchar mot de första fyra eller fem siffrorna i ett nummer för att säkerställa att det är giltiga australiska nummer.

Versionerna märkta 'Inte särskilt exakt:' matchar bara mot den första och andra siffran och kan därför tillåta ogiltiga nummer.

Alla australiska telefonnummer (mobil och fast telefoni - riktnummer krävs)

Mycket exakt:

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

Inte särskilt exakt:

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

Alla australiska telefonnummer (endast fast telefoni - riktnummer krävs)

Mycket exakt:

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

Inte särskilt exakt:

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

Fasta telefonnummer i New South Wales (riktnummer valfritt)

Mycket exakt:

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

Inte särskilt exakt:

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

Fasta telefonnummer i Victoria och Tasmanien (riktnummer valfritt)

Mycket exakt:

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

Inte särskilt exakt:

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

Fasta telefonnummer i Queensland (riktnummer valfritt)

Mycket exakt:

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

Inte särskilt exakt:

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

Fasta telefonnummer i South Australia, Northern Territory och Western Australia (riktnummer valfritt)

Mycket exakt:

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

Inte särskilt exakt:

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

Endast australiska mobiltelefonnummer

Mycket exakt:

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

Inte särskilt exakt:

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

Belgiskt telefonnummer

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

Belgiskt mobiltelefonnummer

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

Franskt telefonnummer

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

Franskt mobiltelefonnummer

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

Luxemburgskt telefonnummer

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

Luxemburgskt mobiltelefonnummer

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

Tyska betyg (med valfritt plus eller minus)

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


Validering av ålder

Exempel: Ålder 20–99

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

Exempel: Ålder 18–35

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

Exempel: Ålder 19–65

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


Validering av tal

Tal från 1 till 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

Tal från 1 till 999, 1.000 till 999.999 till 999.999.999

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

Godtar tal från 1 till 999, 1.000 till 999.999 till 999.999.999 men avvisar tal som 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333

Talvalidering med valfria decimaler (för pris)

Accepterar tal från 0 till 199, med valfria 2 decimaler:

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

Talvalidering med tusentalsavgränsare

Mellanslag som avgränsare, inget minustecken

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

Punkt som avgränsare, minustecken tillåtet

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

Det tvingar fram två decimaler och accepterar tal från 1.00 till 999,999,999.00 med ett valfritt kommatecken som avgränsar tusental/miljoner bland annat alla följande: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00 men inte 1,23.00, 12,3.4 eller 1234,43.04

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

Liknande ovanstående: Tvingar fram två decimaler men accepterar en "0" före decimaltecknet ",".

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

Samma som ovan, men de två decimalerna är valfria:

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

Månad (1-12)

Om du vill fråga efter vilken månad en person föddes kan du validera svaret på följande sätt:

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

Minsta bredd (satt till 3 i det här exemplet)

/^.{3,}$/


Valuta

Amerikansk valuta (dollartecken och cent valfria)

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

Kontrollera användning av kommatecken:

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

Schweiziskt pris

Ett tal med två decimaler efter decimaltecknet, där den sista är antingen 5 eller 0:

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


Validera poäng

1-10

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

1-100

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


Textvalidering

Frågetypen Flera korta textsvar stöder för närvarande inte minsta eller största antal svar. Ett sätt att komma runt detta är att använda frågetypen Lång fritext med ett reguljärt uttryck.

Uttrycket nedan testar att det finns minst ett ord per rad på minst 3 rader och högst 10 rader:

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

Om du till exempel vill ha fem ord per rad kan du ändra den första och sista stjärnan (asterisken) till {4,}:

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

Om du vill ha ett eller flera ord per rad (mellan rad 1 och rad 5) kan du ändra innehållet inom de sista klammerparenteserna till 0,4 (observera att du använder 0 eftersom den första raden redan matchas).

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

Ordräkning

Följande begränsar antalet tillåtna ord till minst 1 och högst 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
För att öka minimum ändrar du nolldelen i {0,199}.

För att öka eller minska maximum ändrar du "199"-delen i {0,199}.

Tidsvalidering

Det finns flera sätt att skriva tidsformat. Några möjliga alternativ är 12 timmar eller 24 timmar, med eller utan sekunder. Du kan använda frågetypen datum (den kan även registrera tid), men du kan också använda frågetypen Kort fritext med ett av de reguljära uttrycken för validering nedan.

Följande tre valideringssträngar testar 24-timmarstid (i ordning) utan sekunder, med valfria sekunder och slutligen med obligatoriska sekunder:

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

Följande tre matchar 12-timmarstid, som ovan med sekunder, valfria sekunder och obligatoriska sekunder:

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

Följande tre matchar antingen 12- eller 24-timmarstid, som ovan med sekunder, valfria sekunder och obligatoriska sekunder:

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

Amerikanska delstater

Använd följande för att validera en delstat (exemplet gäller Texas):

  • TX endast versaler:
    /^(TX)$/
    
  • tx endast gemener:
    /^(tx)$/
    
  • TX med versaler eller gemener:
    /^([T|t][X|x])$/
    


Svordomsfilter

Så här filtrerar du bort svordomar från ett svar:

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

Ersätt "ENTERPROFANITYHERE" med ditt oönskade ord.

\b gör att ord som "assassination" och "hello" släpps igenom om du anger "ass" eller "hell" som svordom. Detta fungerar också om du vill utesluta andra ord, namn etc. från svar.


Användbara länkar

I början av det här wikiavsnittet rekommenderar vi att du använder https://regex101.com/ för att testa och skapa reguljära uttryck. Du kan också använda https://www.regextester.com/ för att skapa uttryck om du inte är nöjd med det första alternativet. Du kan använda https://extendsclass.com/regex-tester.html för att visualisera reguljära uttryck.