Regular expressions er en form for svart magi som kan brukes til å søke gjennom tekststrenger, for eksempel for å hente ut deler av det, eller for å validere innholdet. Her er et eksempel på hvordan man implementerer sin egen e-postvalidering basert på en regular expression i Interact.
Steg 1: Finn en regular expression på nettet. Jeg fant en for e-postvalidering her: https://emailregex.com/. Den ser sånn ut:
(?:[a-z0-9!#$%&'*+/=?^_
{|}~-]+(?:.[a-z0-9!#$%&’*+/=?^_{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Steg 2: Interact liker ikke tegnene \ og " i formler, og de må «escapes» med et ekstra tegn. Du må derfor kjøre en replace i notepad e.l. og erstatte \
med \\
og "
med \"
(i den rekkefølgen). Da sitter du igjen med denne:
(?:[a-z0-9!#$%&'*+/=?^_
{|}~-]+(?:\.[a-z0-9!#$%&’*+/=?^_{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])
Steg 3: Implementer regular expression i et script, her et valideringsscript:
= if (!(E_post_med_regex =~ "(?:[a-z0-9!#$%&'*+/=?^_
{|}~-]+(?:\.[a-z0-9!#$%&’*+/=?^_{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"))](file://.)%7b3%7d(%3f:25[0-5]|2[0-4][0-9]|[01]%3f[0-9][0-9]%3f|[a-z0-9-]*[a-z0-9]:(%3f:[/x01-/x08/x0b/x0c/x0e-/x1f/x21-/x5a/x53-/x7f%5d|/%5b/x01-/x09/x0b/x0c/x0e-/x7f%5d)+)/%5d)%22))) {return "Du må taste inn en gyldig e-postadresse"}
E_post_med_regex er her id til feltet som skal sjekkes. Logikken her er altså HVIS IKKE (!) regex returnerer true, vis feilmelding. Det skal inn her:
Det fungerer som det skal: