Använda reguljära uttryck
From LimeSurvey Manual
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.
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.