Met patterns kan je omschrijven welke karakters je verwacht in een open response variabele. Je moet ze definiëren voor elke variabele die patterns gebruikt.

Er zijn 2 types van scanning validatie in Snap, ‘Spelling‘ en ‘Patterns‘.

  • Spelling validatie controleert een antwoord tegenover een woordenlijst, en tracht antwoorden te matchen met woorden uit de woordenlijst.
  • Pattern validation controleert een patroon van karakters dat jij verwacht te zien verschijnen als antwoord. Dit is heel handig voor antwoorden zoals datums, telefoonnummers of postcodes.

Er zijn verschillende versies van spelling en pattern validatie voor handgeschreven en gedrukte karakters.

Je kan één of meer scanning validatie patronen creëren voor elke variabele in je enquête. Elk patroon komt overeen met een verwacht antwoord. Je creëert een pattern door Snap te vertellen hoeveel van welke karakters je verwacht.

Bijvoorbeeld : je kan verschillende patronen creëren voor een telefoonnummer:

  • Een patroon dat cijfers verwacht tussen 0 en 9
  • een patroon dat een + als eerste karakter verwacht
  • Een patroon dat zowel + als cijfers verwacht

De software zou dan élk patroon checken om te kijken of de gescande karakters overeen komen met die uit het patroon, en het zou veronderstellen dat "I" het cijfer 1 is, eerder dan een letter "l".


Deze worksheet bevat

  • Enkele standaard scanning validatie patronen met instructies om ze toe te voegen aan je variabelen (zie optie A)
  • Instructies om je eigen validatiepatroon te creëren voor een eenvoudige user ID (zie optie B)


Stap 1 - stel een variabele in om een pattern te gebruiken

  1. Open de enquête in Questionnaire mode.
  2. Selecteer de vraag op dewelke je een pattern wil toepassen (bvb : een vraag "Wat is het telefoonnummer?")
  3. Druk  [Alt]+[Enter] om het Variable Properties dialoogscherm te tonen.
  4. Scroll om de  Scanning Validation eigenschap te tonen en ze te veranderen van  None naar Pattern. Dit is het pattern voor handgeschreven antwoorden.


    vp_scanv_pat

  5. Klik OK om het dialoogvenster te sluiten, en open daarna het Variables scherm.
  6. Dubbelklik op de variabele in de lijst waar je een pattern op instelde en open het Variable Details scherm.
  7. klik op het Toggle Definitions icoon en je zal zien dat Pattern geselecteerd is in de Scanning Validation dropdown.
  8. Klik op de 3 puntjes om het Pattern Match List dialoogvenster te openen, waar alle bestaande patronen voor deze vraag zijn opgelijst (op dit ogenblik is de lijst leeg).


    pml_dial


Stap 2 - een pattern toepassen (2 opties)


Optie A: bestaande patterns toepassen

Ja kan patronen creëren door pattern definitions te kopiëren naar het design veld. Deze stap voorziet je van voorbeeldpatronen voor datums, postcodes en telefoonnummers, en toont je hoe je ze kan kopiëren.

  1. Stel een variabele in om een pattern te gebruiken (Stap 1)
  2. Klik [New…] in het Pattern Match List dialoogvenster om een patroon te creëren.


    pml_dial_new

  3. Het Pattern Match Details dialoogvenster opent. Gebruik [Ctrl]+[C] om het voorbeeldpatroon te kopiëren uit de tabel hieronder (onder stapje 9). Er mogen geen line breaks voorkomen in het patroon!
  4. Gebruik [Ctrl]+[V] om de patroontekst te kopiëren naar het  Pattern veld.
  5. Kopieer de tekst in het "patroon te vervangen" kolom indien je het antwoord wil omzetten naar een standaard formaat. Plak dit in het Replace With veld.


    pmd_pasted

  6. Klik [OK] om het pattern te bewaren.
  7. Creëer andere patronen naar wens op deze variabele (bijvoorbeeld : voeg een ander telefoonnummer formaat toe). Je kan de patronen testen door te klikken op  [Test All] in de Pattern List en dan mogelijke antwoorden invoeren om ze te testen.
  8. Eens je hebt getest of uw patterns correct functioneren, klik  [OK] om naar het Variable Details scherm terug te keren.
  9. Klik save om de wijzigingen op te slaan.


Voorbeelden van Scanning validatiepatronen die standaard meegeleverd worden met Snap Surveys


DefinitiePatroon te kopiërenPatroon te vervangen (optioneel)Effect van vervanging
US ZIP code patronen


5-cijferige ZIP code\d{5}

5+4 cijferige ZIP code (separator is niet-numeriek)(\d{5})\D(\d{4})\1-\2Plaatst “-” tussen de onderdelen van de ZIP code
2 karakter staatcode met optionele spatie en 5-cijferige ZIP Code([A~Za~z]{2})\s?(\d{5})\1 \2Plaatst een spatie tussen de karakters en de cijfers
2 karakters staatcode met optionele spatie en 5+4 cijferige ZIP code([A~Za~z]{2})\s?(\d{5})\D(\d{4})\1 \2-\3Plaatst een spatie tussen de karakters en de cijfers en een "-" tussen de onderdelen van de Zip code
UK Postcode patronen


Regio en District (één of twee letters, gevolgd door één of twee cijfers), optionele spatie, sector en unit([A~Za~z]{1,2})(\d{1,2})\s?(\d)([A~Za~z]{2})\1\2 \3\4Forceert een spatie tussen district en sector
Regio en district (één of twee letters gevolgd door één of twee cijfers), optionele spatie, sector en unit([A~Za~z]{2})(\d[A~Za~z]{1})\s?(\d)([A~Za~z]{2})\1\2 \3\4Forceert spatie tussen district en sector
Datum patronen


4-6 cijferige datum (1 of 2 dag- en maand cijfers en 2 jaarcijfers). Geldig voor VS en UK datums(\d{1,2})\D(\d{1,2})\D(\d{2})\1-\2-\3Plaatst "-” als separator tussen de elementen van de datum. Voor een andere separator, vervang “-” door je gekozen karakter.
6-8 cijferige datum (1 of 2 dag- en maand cijfers en 4 jaarcijfers). Geldig voor VS en UK datums(\d{1,2})\D(\d{1,2})\D(\d{4})\1-\2-\3Plaatst "-” als separator tussen de elementen van de datum. Voor een andere separator, vervang “-” door je gekozen karakter. 
UK Telefoonnummers patronen


0 plus 9 of 10 cijfers met spaties toegelaten op élké plaatst (bvb 01424 280 800)

0\s?(\d)\s?(\d)\s?(\d)\s?(\d)\s?(\d)\s?(\d)\s?(\d)\s?(\d)\s?(\d)\s?(\d)\s?(\d?)0\1\2\3\4\5\6\7\8\9\10Verwijdert alle optionele spaties (dit zou geven : 01424280800)

UK telefoonnummer met haakjes (bvb (01424) 280 800)\((\d{3,6})\)\s?(\d{3})\s?(\d{2,4})\1\2\3Verwijdert haakjes en optionele spaties (resulteert in 01424280800)
Internationaal nummer bvb +44 1424 28000)\+44\s?(\d{2,6})\)?\s?(\d{3})\s?(\d{2,4})0\1\2\3Verwijdert internationale code en optionele spaties (resulteert in 01424280800)
Internationaal nummer met “(0)” (bvb +44 (0) 1424 28000)\+44\s?\(0\)\s?(\d{2,6})\)?\s?(\d{3})\s?(\d{2,4})0\1\2\3Verwijdert internationale code en optionele spaties (resulteert in 01424280800)
US Telefoonnummers patronen


7-cijferig nummer met optionele sparies of streepjes (bvb 610-8700)(\d{3})[ -\~]?\d{4})\1-\2Vervangt optionele spaties door streepjes
10-cijferig nummer met optionele spaties of streepjes (bvb (603) 610 8700)\(?(\d{3})\)?[ -\~]?(\d{3})[ -\~]?(\d{4})\1-\2-\3Verwijdert haakjes en vervangt optionele spaties (resulteert in 603-610-8700)
Internationaal nummer (bv +1-603-610 -8700)\+1[ -\~]?\(?(\d{3})\)?[ -\~]?(\d{3})[ -\~]?(\d{4})\1-\2-\3Verwijdert internationale code en haakjes en vervangt optionele spaties (resulteert in 603-610-8700)
Munteenheid


Getal van willekeurige lengte zonder decimale plaatsen (bvb 123)(\d+)\1.00Voegt lege decimale plaatsen toe (123.00)
Getal van willekeurige lengte met decimaal punt en 2 decimale plaatsen(bvb 123,45)(\d+)[ ‘\*\,~\._~`\~](\d{2})\1.\2Verwijdert niet-standaard decimaal punt en vervangt het door “.” (123.45)
Een of twee cijfers met "pence" marker (bvb  34p)(\d{1,2})[Pp]00.\1Wijzigt waarde in decimaal getal (0.34)






Optie B: Bouw je eigen validatiepatroon

Hieronder tonen we je hoe je een eenvoudig validatiepatroon kan bouwen. Dit voorbeeld is een patroon voor een ID van 2 cijfers, gevolgd door 5 letters (cijfers kunnen gescheiden worden van de letters door een spatie). Het patroon verwijdert spaties van het ID alvorens het antwoord in Snap op te slaan.

  1. Stel een variabele in om een patroon te gebruiken
  2. Klik [New…] in het Pattern Match List dialoogvenster om een pattern te bouwen


    pml_dial_new

  3. Klik op de 3 puntjes rechts van het Pattern veld om het Pattern Item dialoogvenster te openen.


    pmd_empty_hl

  4. Definieer het eerste element van je patroon. Dit zijn de 2 cijfers. Selecteer Digit (0 to 9).


    pi_2_dig


    Stel de herhaling in op Exactly 2 in de Repetition zone. Selecteer Remember. Dit maakt dat je onderdelen van het patroon kan vervangen.
  5. Klik [OK] om terug te gaan naar het Pattern Match Details dialoogvenster. Het onderdeel van het patroon wordt omschreven in Description. Het wordt "onthouden" als onderdeel \1 en zoekt naar 2 cijfers van 0 tot 9.


    pmd_2_curs_hl

  6. Creëer nu een ondereel voor een mogelijke spatie. Plaats de cursor in het Pattern veld op het einde van de tekst en klik op de 3 puntjes. Selecteer Space.


    pi_sp_0+


    Stel de herhaling in op 0 or more in de Repetition zone.
  7. Klik [OK] om dat onderdeel van uw patroon te bewaren
  8. Nu moet je de letters in het patroon definiëren. Plaats de cursor in het Pattern veld op het einde van de tekst en klik de 3 puntjes. Klik “A”, houd [Shift] ingedrukt en klik  “Z” in de lijst met mogelijke karakters
    pi_caps
    Stel de herhaling in op Exactly 5 in de Repetition zone. Selecteer Remember.
  9. Klik [OK] om dit deel van je patroon te bewaren. Dit onderdeel wordt "onthouden" als \2 en zoekt naar 5 letters
  10. Vul  \1\2 in in het Replace With veld van het Pattern Match Details dialoogvenster. De \1 verwijst naar je eerste "te onthouden" onderdeel en de \2 verwijst naar het tweede te onthouden patroononderdeel. Mogelijke spaties worden genegeerd
  11. Vul een voorbeeld user ID in in het Test veld. Aanwezige spaties die de cijfers van de letters scheiden zullen worden verwijderd in het Replace veld. Dit toont wat er zou gebeuren met de ingescande tekst in de enquête. De tekst uit het Replace veld zal worden opgeslagen in Snap.


    pmd_uid_test

  12. Klik [OK] om te bewaren


Indien je dit patroon wil gebruiken op andere variabelen, kan je de tekst van het pattern definition kopiëren in een nieuw patroon, zoals omschreven in Optie A.


Hieronder de termen die je onmiddellijk in het Pattern definition veld kan invoeren : 


Pattern expressies

Pattern:Komt overeen metUitleg
abcabcWanneer het patroon enkel tekst bevat, zal de data overeenkomen indien ze dezelfde is als het patroon
.Willekeurig karakterWanneer er een puntje in het patroon staat, wordt dat karakter gematcht met eender welk karakter in de data.
x+1 of meer x'enWanneer we willen dat een karakter wordt herhaald, kunnen we een + achter dat karakter plaatsen
J.+Elk woord beginnend met JDit patroon probeert een woord te matchen dat start met een J.
x*0 of meer x'enDit is zoals de + (we zoeken naar een herhaald karakter), meer zal toelaten dat het karakter voor het sterretje niet aanwezig is in de data
[ace]a of c of eEen enkel karakter kan gematcht worden met een karakter uit een reeks, als de karakters tussen vierkante haakjes worden geplaatst.
[A~E]A of B of C of D of EMatcht elk karakter binnen de gespecificeerde reeks
[^abc]Elk karakter behalve a of b of cEen ^ voor een karakterset forceert een match met alles dat GEEN deel uitmaakt van die karakterset.
\dElk cijfer van 0 tot 9
Wanneer je een cijfer wil matchen, kan je  [0~9] gebruiken, of je kan deze shortcut gebruiken
\DGeen cijferWanneer je alles wil matchen, behalve een cijfer
\wKarakter of cijferWanneer je een woordkarakter wil matchen. Dit aanvaardt letters, cijfers en de underscore
\W[^a~zA~Z0~9_]Wanneer je alles wil matchen behalve een woordkarakter. Dit is handig wanner je punctuaties, spaties en andere symbolen wil matchen, maar je geen woordkarakter of cijfer wil matchen.
\sspatiewordt gebruikt om een patroon te matchen waarin een spatie staat
\Sgeen spatiedeze shortcut matcht alles behalve een spatie
\metachar itselfSoms wil je een punt of een backslash matchen. Deze karakters hebben echter betekenissen in de pattern definiies. Met deze shortcut vertel je Snap dat er écht moet gezocht worden naar een punt door er een backslash voor te zetten. Hetzelfde geldt voor +, * of andere symbolen. Als je bijvoorbeeld een backslash wil matchen, dan plaats je gewoon een 2de backslash ervoor.

Herhalingsexpressies

Pattern:Komt overeen metUitleg
x?0 of xWanneer je een optioneel karakter hebt, plaats er een ? achter
x{3}xxxJe kan zeggen hoe dikwijls iets herhaald wordt, door het aantal herhalingen tussen accolades te plaatsen achter het gezochte karakter.
x{2,5}xx of xxx of xxxx of xxxxxJe kan zeggen hoe dikwijls iets wordt herhaald en het minimum en maximum aantal herhalingen aangeven.
x{2,}xx of xxx of xxxx zonder maximumJe kan zeggen hoe dikwijls iets herhaald wordt en het minimum aangeven, zonder een maximum.