Säännöllisten lausekkeiden käyttö
From LimeSurvey Manual
Säännöllisen lausekkeen täytyy alkaa ja päättyä kenoviivaan ("/"). Hyvän kokoelman säännöllisiä lausekkeita löydät osoitteesta https://www.regexlib.net/. Nämä mallit toimivat lähes aina, kun ne ympäröidään kenoviivoilla.
Voit testata säännöllistä lauseketta tällä regex-testaustyökalulla.
Tärkeää: säännölliset lausekkeet ehdoissa
Huomaa, että kun käytät säännöllisiä lausekkeita ehtoeditorissa, alku- ja loppukenoviivaa EI tule lisätä.
Sähköpostin validointi
Päivitys (12/2018): Nykyään verkkotunnukset voivat sisältää erikoismerkkejä, kuten “ü”, ja verkkotunnuksen pääte voi olla yli kolmimerkkinen, kuten .tech tai .company. Siksi alla oleva sähköpostin säännöllinen lauseke tarkistaa vain, että syötetyssä sähköpostiosoitteessa on “@” ja “.”.
/^.+?@.+?\..+$/
Jos haluat validoida yhden osoitteen riviä kohden monirivisessä pitkän tekstin kentässä:
/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\n)?\n?)+)*)$/
Tässä vanhentuneessa säännöllisessä lausekkeessa verkkotunnus on rajattu kolmeen merkkiin, mikä ei kata kaikkia käytössä olevia verkkotunnuksia:
/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/
Postinumerot
Australialaiset postinumerot:
/^[0-9]{4}/
Brasilialaiset postinumerot
/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/
Kanadalaiset postinumerot
/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/
Yhdysvaltalaiset postinumerot
/^[0-9]{5}([- /]?[0-9]{4})?$/
Jos postinumeron on tarkoitus alkaa nollalla, käytä seuraavaa:
/^[0-9]{5}(?:-[0-9]{4})?$/
Britannialaiset postinumerot
/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i
Huomaa, että tämä ei ole kovin tarkka, ja tarkempi validointi on paljon monimutkaisempi. Katso lisätietoja esimerkiksi StackOverflow-vastauksesta ja Wikipediasta.
Ranskalaiset postinumerot
/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/
Yllä oleva lauseke on hyvin tarkka, ja se tarkistaa, onko ranskalainen departementti olemassa (kaksi ensimmäistä numeroa), mukaan lukien merentakaiset departementit ja merentakaiset alueet (DOM-TOM).
Puhelinnumerot
Yhdysvaltalaiset puhelinnumerot
/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/
tai
/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/
Tämä toinen vaihtoehto täsmää kaikkiin kanadalaisiin ja yhdysvaltalaisiin puhelinnumeroihin, jotka sisältävät muita kuin numeromerkkejä, kuten:
. ( ) - (space)
Näin voit täsmätä puhelinnumeroihin, jotka muistuttavat seuraavia:
- (555)555 5555
- 555.555.5555
- 555 555 5555
- (555)-555-5555
- 555-555-5555
- 555555555
Australialaiset puhelinnumerot
Seuraavat mallit täsmäävät kaikkiin australialaisiin matkapuhelin- ja lankapuhelinnumeroihin, myös sellaisiin, joissa on maatunnuksen etuliite "+61":
- (02) 9123 6535
- 03 1234-5345
- 0412 345 678
- +61 2 3456 789
Mutta ei seuraaviin:
- 234 3450 234
- a234 534 3432
- 134567
- 123456789013
Sulkeet, välilyönnit ja yhdysmerkit jätetään huomiotta.
Tässä luetellut 'Erittäin tarkka:' -versiot vertaavat numeron neljää tai viittä ensimmäistä numeroa varmistaakseen, että kyseessä ovat kelvolliset australialaiset numerot.
'Ei kovin tarkka:' -versiot vertaavat vain ensimmäistä ja toista numeroa, joten ne voivat hyväksyä virheellisiä numeroita.
Kaikki australialaiset puhelinnumerot (matkapuhelin ja lankapuhelin - suuntanumero vaaditaan)
Erittäin tarkka:
/^\(?(?:\+?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})$/
Ei kovin tarkka:
/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/
Kaikki australialaiset puhelinnumerot (vain lankapuhelimet - suuntanumero vaaditaan)
Erittäin tarkka:
/^\(?(?:\+?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}$/
Ei kovin tarkka:
/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/
Uuden Etelä-Walesin lankapuhelinnumerot (suuntanumero valinnainen)
Erittäin tarkka:
/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/
Ei kovin tarkka:
/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/
Victorian ja Tasmanian lankapuhelinnumerot (suuntanumero valinnainen)
Erittäin tarkka:
/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/
Ei kovin tarkka:
/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/
Queenslandin lankapuhelinnumerot (suuntanumero valinnainen)
Erittäin tarkka:
/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/
Ei kovin tarkka:
/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/
Etelä-Australian, Northern Territoryn ja Länsi-Australian lankapuhelinnumerot (suuntanumero valinnainen)
Erittäin tarkka:
/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/
Ei kovin tarkka:
/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/
Vain australialaiset matkapuhelinnumerot
Erittäin tarkka:
/^(?:\+?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}$/
Ei kovin tarkka:
/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/
Belgialainen puhelinnumero
/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/
Belgialainen matkapuhelinnumero
/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/
Ranskalainen puhelinnumero
/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/
Ranskalainen matkapuhelinnumero
/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/
Luxemburgilainen puhelinnumero
/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/
Luxemburgilainen matkapuhelinnumero
/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/
Saksalaiset arvosanat (valinnainen plus tai miinus)
/^[1-6]{1}[\+|\-]?$/
Iän validointi
Esimerkki: ikä 20-99
/([2-9][0-9])/
Esimerkki: ikä 18-35
/(1[8-9]|2[0-9]|3[0-5])/
Esimerkki: ikä 19-65
/^(1[8-9]|[2-5][0-9]|6[0-5])$/
Numeroiden validointi
Numerot 1–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
Numerot 1–999, 1.000–999.999 ja 999.999.999
/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/
Hyväksyy numerot 1–999, 1.000–999.999 ja 999.999.999 asti, mutta hylkää numerot, kuten 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333
Lukujen validointi valinnaisella desimaaliosalla (hinnoille)
Hyväksyy luvut 0–199, joissa 2 desimaalia on valinnaisia:
/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/
Lukujen validointi tuhaterottimella
Välilyönti erottimena, ei miinusmerkkiä
/^(?!0)\d{1,3}(\ \d{3})*$/
Piste erottimena, miinusmerkki sallittu
/^-?(?!0)\d{1,3}(\.\d{3})*$/
Se pakottaa kaksi desimaalia ja hyväksyy luvut 1.00–999,999,999.00, joissa tuhansia ja miljoonia erottaa valinnainen pilkku, mukaan lukien kaikki seuraavat: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00 mutta ei lukuja 1,23.00, 12,3.4 tai 1234,43.04
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Kuten edellä: pakottaa kaksi desimaalia, mutta hyväksyy "0":n ennen desimaalierotinta ",".
/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/
Sama kuin yllä, mutta kaksi desimaalia ovat valinnaisia:
/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/
Kuukausi (1–12)
Jos haluat kysyä henkilön syntymäkuukautta, voit validoida syötteen seuraavasti:
/^[0]*[1-9]$|^[0]*1[0-2]$/
Vähimmäispituus (tässä esimerkissä 3)
/^.{3,}$/
Valuutta
Yhdysvaltain valuutta (dollarimerkki ja sentit valinnaisia)
/^\$?\d+(\.(\d{2}))?$/
Pilkun käytön tarkistus:
/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/
Sveitsiläinen hinta
Luku, jossa on kaksi desimaalia desimaalipisteen jälkeen ja joista viimeinen on joko 5 tai 0:
/^(\d+)(\.\d(05)?)?$/
Pistemäärän validointi
1–10
/^[1-9]{1}$|^10$/
1–100
/^[1-9]?[0-9]{1}$|^100$/
Tekstin validointi
Useita lyhyitä tekstikenttiä -kysymystyyppi ei tällä hetkellä tue vastausten vvähimmäis- tai enimmäismäärää. Yksi tapa kiertää tämä on käyttää Pitkä vapaateksti -kysymystyyppiä säännöllisen lausekkeen kanssa.
Alla oleva lauseke tarkistaa, että jokaisella rivillä on vähintään yksi sana ja rivejä on vähintään 3 ja enintään 10:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is
Jos haluat esimerkiksi viisi sanaa riviä kohden, voit muuttaa ensimmäisen ja viimeisen tähden (*) muotoon {4,}:
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is
Jos haluat yhden tai useamman sanan riviä kohden (rivien 1 ja 5 välillä), voit muuttaa viimeisten aaltosulkeiden sisällön muotoon 0,4 (huomaa, että käytät arvoa 0, koska ensimmäinen rivi tulee jo täsmätyksi).
/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is
Sanamäärä
Seuraava rajoittaa sallittujen sanojen määrän vähintään yhteen ja enintään 200:aan:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Voit suurentaa vähimmäismäärää muuttamalla lausekkeen {0,199} nolla-osaa.
Voit suurentaa tai pienentää enimmäismäärää muuttamalla lausekkeen {0,199} osaa "199".
Ajan validointi
Kellonaika voidaan kirjoittaa monella tavalla. Mahdollisia vaihtoehtoja ovat esimerkiksi 12 tunnin tai 24 tunnin kello, sekunneilla tai ilman. Vaikka voit käyttää myös päivämääräkysymystyyppiä (se voi tallentaa myös ajan), voit käyttää Lyhyt vapaateksti -kysymystyyppiä jonkin alla olevan validointilausekkeen kanssa.
Seuraavat kolme validointimerkkijonoa tarkistavat 24 tunnin ajan (esiintymisjärjestyksessä) ilman sekunteja, valinnaisilla sekunneilla ja lopuksi pakollisilla sekunneilla:
/^(?:[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]$/
Seuraavat kolme täsmäävät 12 tunnin aikaan, kuten edellä: sekunneilla, valinnaisilla sekunneilla ja pakollisilla sekunneilla:
/^(?">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))$/
Seuraavat kolme täsmäävät joko 12 tai 24 tunnin aikaan, kuten edellä: sekunneilla, valinnaisilla sekunneilla ja pakollisilla sekunneilla:
/^(?:(?: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])$/
Yhdysvaltain osavaltiot
Voit tarkistaa yhden osavaltion seuraavasti (esimerkkinä Texas):
- TX vain isoilla kirjaimilla:
/^(TX)$/
- tx vain pienillä kirjaimilla:
/^(tx)$/
- TX isoilla tai pienillä kirjaimilla:
/^([T|t][X|x])$/
Kirosanasuodatin
Näin suodatat kirosanat vastauksesta:
/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/
Korvaa "ENTERPROFANITYHERE" haluamallasi kirosanalla.
Merkintä \b sallii sellaiset sanat kuin "assassination" ja "hello", vaikka kirosanaksi syöttäisit "ass" tai "hell". Tämä toimii myös, jos haluat estää vastauksista muita sanoja, nimiä tms.
Hyödyllisiä linkkejä
Tämän wiki-osion alussa suosittelemme käyttämään osoitetta https://regex101.com/ säännöllisten lausekkeiden testaamiseen ja luomiseen. Voit myös käyttää osoitetta https://www.regextester.com/ lausekkeiden luomiseen, jos ensimmäinen vaihtoehto ei miellytä. Osoitteessa https://extendsclass.com/regex-tester.html voit havainnollistaa säännöllisiä lausekkeita visuaalisesti.