RegEx i Episerver Forms: Huskeliste for vanlige norske formater
Skal du lage skjemafelter som krever et bestemt input-format, men sliter med å huske de kryptiske RegEx-formlene? Her er huskelisten du trenger.
RegEx: Vanlige formater i Episerver Forms
Når du lager et fritekstfelt i skjemaet ditt i Episerver Forms, finnes det et konfigurasjonsvalg som heter "vanlig uttrykk" (på engelsk omtales dette gjerne som Regular Expression eller RegEx). Dette bruker du når du ønsker at brukeren skriver inn skjemafeltet i et bestemt format, f.eks et mobilnummer, fødselsnummer, bilskilt, kontonummer eller annet:
Man bruker gjerne RegEx når formatet man trenger hverken er ren tekst eller et heltall, eller det finnes flere gyldige måter å skrive verdien i feltet på.
Tenk f.eks på et bilskilt - det er forskjell på om brukeren fyller inn "AB 12345" eller "AB1234", men begge deler kan være gyldige.
Eller et kontonummer: "1234.56.78910", "12345678910" eller "1234 56 78910"? Slikt kan føre til kluss enten når du eksporterer skjemadata videre til Excel, eller når det sendes direkte videre som JSON/XML til andre systemer.
Fordelen med RegEx er altså at man med en fiffig formel kan validere både:
- at brukeren fyller inn riktig antall tegn
- at brukeren kun bruker gyldige tegn for det aktuelle formatet
- at formatet brukeren skriver inn er riktig (med spesialtegn som mellomrom, punktum osv).
RegEx er veldig kraftfullt, men også ganske kryptisk.
Regex-forklaring: Mobilnummer
En av formlene i listen under er norsk mobilnummer. RegEx-formelen for dette kan se slik ut:
^((0047)?|(\+47)?)[4|9]\d{7}$
Kort forklart:
- Inputen kan starte (^) med enten 0047 eller +47 (landskoden er ikke påkrevd)
- Selve mobilnummeret må starte med enten 4 eller 9...
- ...etterfulgt av 7 sifre (altså 8 totalt)
- ...og det skal ikke være noe etter disse 8 sifrene ($)
- Det skal ikke være noen mellomrom i mobilnummeret (altså lov med +4799887766 eller 99887766, men ikke +47 99887766 eller 998 87 766 eller 99 88 77 66).
Det finnes mange steder på nett å lære å skrive egne RegEx, se nederst i dette blogginnlegget!
Tips: Bruk plassholder-tekst til å hinte om formatet
Inputfelter i Episerver Forms har et konfigurasjonsvalg som heter "Plassholder" (placeholder). Dette er en tekst som vises i en gråtone i inputfeltet, men som forsvinner når brukeren begynner å taste der. Plassholder-teksten blir aldri sendt inn.
Du kan bruke plassholderen til å hinte til brukeren om forventet format, slik:
RegEx-listen - norske formater
Jeg har hittil ikke funnet et sted hvor de mest vanlige norske Regex-formlene er samlet på ett sted.
Så, her er denne listen. Samtlige er testet i Episerver Forms. Listen fylles på fortløpende:
Generelle formater
Noen tips:
- Dersom du ikke med sikkerhet kan si at inputfeltet bare skal ha ett gyldig format, er det bedre å la dette være et rent tekstfelt (med en øvre og nedre grense for antall tegn, og du kan angi i RegEx'en om ulike spesialtegn skal være tillatt.)
- Dersom du vil unngå å kreve store/små bokstaver i inputfeltet, kan du heller få utviklerne dine til å style feltet med CSS (text-transform: uppercase / lowercase). Stylingen av feltet påvirker formatet inputfeltet sendes inn i.
Beskrivelse | RegEx-formel | Eksempel på gyldig input |
En bestemt lengde (1-10), alle tegn tillatt |
^.{1,10}$ |
Sjokolade |
En bestemt lengde (1-10), kun store/små bokstaver (ingen tegn/tall) |
^[A-Z,a-z]{1,10}$ |
Sekretær |
En bestemt lengde (1-10), kun tall og bokstaver (ingen tegn) |
^[A-Z,a-z,0-9]{1,10}$ |
Øya2020 |
Telefonnummer
Beskrivelse | RegEx-formel | Eksempel på gyldig input |
Mobil: Landskode valgfri, etterfulgt av 8 siffer som starter med 4 eller 9 | ^((0047)?|(\+47)?)[4|9]\d{7}$ | 004799887766 +4799887766 99887766 44556677 |
Mobil: Ingen landskode, ingen mellomrom, kun 8 siffer som starter med 4 eller 9 | ^[4|9]\d{7}$ | 99887766 44556677 |
Mobil: Ingen landskode, 8 siffer med mellomrom | ^[4|9]\d{2} \d{2} \d{3}$ | 998 87 766 445 56 677 |
Fasttelefon + mobil: Landskode valgfri, etterfulgt av 8 siffer (kan ikke starte med 0) | ^((0047)?|(\+47)?)[1-9]\d{7}$ | 004799887766 +4722334455 99887766 22334455 |
Bankkontonummer
Beskrivelse | RegEx-formel | Eksempel på gyldig input |
11 siffer (kan ikke starte med 0) med punktum som skilletegn | ^[1-9]\d{3}\.\d{2}\.\d{5}$ | 1111.22.33333 |
11 siffer (kan ikke starte med 0) med mellomrom som skilletegn | ^[1-9]\d{3}\ \d{2}\ \d{5}$ | 1111 22 33333 |
11 siffer (kan ikke starte med 0), ingen skilletegn | ^[1-9]\d{10}$ | 11112233333 |
Postnummer
Beskrivelse | RegEx-formel | Eksempel på gyldig input |
4 siffer mellom 0001-9998 (0000 og 9999 er ikke i bruk) | ^(000[1-9]|0[1-9][0-9][0-9]|[1-9][0-9][0-9][0-8])$ | 0181 3190 8340 |
Fødselsnummer
Format-referanse | Personnummer-generator til testing
Beskrivelse | RegEx-formel | Eksempel på gyldig input |
11 siffer med datovalidering, ingen mellomrom |
^(0[1-9]|[1-2][0-9]|31(?!(?:0[2469]|11))|30(?!02))(0[1-9]|1[0-2])\d{7}$ |
24011988020 31073416399 |
11 siffer med datovalidering, med mellomrom mellom fdato og pnr |
^(0[1-9]|[1-2][0-9]|31(?!(?:0[2469]|11))|30(?!02))(0[1-9]|1[0-2])(\d{2})( )(\d{5})$ |
240119 88020 310734 16399 |
Registreringsnummer/bilskilt
- Merk at bilskilt er litt finurlig, siden det finnes så mange gyldige formater (f.eks personbil AB12345, buss/lastebil/MC AB1234, militærkjøretøy 12345, prøveskilt AB123, personlig MINBIL osv).
Beskrivelse | RegEx-formel | Eksempel på gyldig input |
Personbil, uten mellomrom, ikke case-sensitiv |
^[A-Z,a-z]{2}[1-9]{1}\d{4}$ |
AB12345 ab12345 |
Personbil, med mellomrom, case-sensitiv (kun store bokstaver) |
^[A-Z]{2}[1-9]{1}\d{4}$ |
AB 12345 |
Buss/lastebil/MC, uten mellomrom |
^[A-Z]{2}[1-9]{1}\d{3}$ |
AB1234 |
2-7 tegn, tillater bokstaver, tall, mellomrom og strek |
^[0-9,a-z,A-Z, ,-]{2,7}$ |
A-12345 |
Forslag, ønsker eller rettelser til listen?
Dersom du har formater du gjerne skulle sett på listen, ta gjerne kontakt med meg, så føyer jeg det til.
Det finnes flere steder online hvor man kan finne ferdiglagde RegEx-formler for ulike formater fra mange land, men disse bør testes godt før du tar dem i bruk.
- Regex101.com online regex tester and debugger: Her kan du teste og justere dine RegEx-formler til de funker slik du vil.
- Regular expression library: Et søkbart arkiv over RegEx-formler innsendt av andre brukere