Avatar billede apo Praktikant
23. oktober 2005 - 18:32 Der er 16 kommentarer og
1 løsning

Input-validering via Reg.Exp

Hej, prøver igen :-)

Jeg vil reducere mine valideringssætninger, så meget som muligt, og gerne via Reg.Exp. (Til brug i forbindelse med ASP).

Hvordan validerer man inputs med emailadresse og tekst, via Reg.Exp?

Email (Input):
Felterne må ikke være tomme, skal indeholde 1 stk. '@', minimum 1 stk '.', minimum 2 bogstaver efter punktummet, og må ikke overskride flere end 60 tegn i alt (Og minimum 6 tegn i alt).

Tekst1 (Input):
Felterne må ikke være tomme, skal minimum indeholde 5 tegn i alt og maks 50 bogstaver i alt (Må ikke indeholde tal kun a-å og A-Å).

Tekst2 (Input):
Felterne må ikke være tomme, skal minimum indeholde 5 tegn i alt og maks 50 tegn i alt (både bogstaver a-å og A-Å, alle tegn og tal 0-9)

Tekst3 (Textarea):
Felterne må ikke være tomme, skal minimum indeholde 10 tegn i alt og maks 5000 tegn i alt (både bogstaver a-å og A-Å, alle tegn og tal 0-9)

Ingen af felterne må indeholde HTML-koder (Hvis det kan lade sig gøre).

Håber at der er en Reg.Exp-haj, der kan hjælpe :-)
Avatar billede apo Praktikant
23. oktober 2005 - 23:26 #1
Hmm... Det må åbenbart være en svær opgave?
Avatar billede roenving Novice
24. oktober 2005 - 12:27 #2
Hrm, det bliver nødvendigt med sammensatte funktioner, for jeg ville ikke begynde at sammensætte funktioner i regexps !-)

-- men det kunne se sådan ud (jeg går ud fra, at du er med på instantieringen af regex-objekterne !-)

regEmail.Pattern = "^.*?@\\w[\\w.-]*\\.[a-z]{2,6}$"
regEmail.IgnoreCase = True

regMailLength = "^\\s{6,60}$"

regTekst1 = "^[a-zæøå]{5,50}$" ' Hvad med mellemrum og f.eks. kommaer (Måske sådan: [a-zæøå,\\. -] ?-)
regTekst1.IgnoreCase = True

regTekst2 = "^[\\wæøå,\\. -]{5,50}$" ' Hvad med accent-bogstaver ?-)
regTekst2.IgnoreCase = True

regTekst3 = "^[\\wæøå,\\. -]{10,5000}$"
regTekst1.IgnoreCase = True

regNoHTML = "<[a-z]+.*?>"
regNoHTML.Global = True
regNoHTML.IgnoreCase = True
Avatar billede apo Praktikant
24. oktober 2005 - 14:09 #3
"(jeg går ud fra, at du er med på instantieringen af regex-objekterne !-)"

Nej, hvad er instantiering (Hvordan man benytter dem?)? Jeg kender absolut intet til Reg.Exp., andet end at jeg ved, at det er meget anvendeligt til at præcisere reglerne for en given streng. Men præcis hvordan man benytter det, ved jeg kun lidt om.

Med 'tegn' mente jeg alle tegn (De mest benyttede i dansk sprog al fald)
Avatar billede roenving Novice
24. oktober 2005 - 14:38 #4
Jeg kender ikke VBscript syntaksen for alvor, men du skal for hver af ovenstående regExp-objekter instantiere dem før du kan give dem properties ...

-- endnu mindre kender jeg syntaksen for sammenligningerne, så du skal måske prøve at kigge i andre spørgsmål i denne eller asp-kategorien ...

-- såvidt jeg husker skal du:

Dim regEmail as RegEx
Set regEmail = new RegEx ' Måske kun den ene og måske RegExp !-)
Avatar billede apo Praktikant
24. oktober 2005 - 15:04 #5
Ikke fordi jeg skal gøre mig klog på det, men burde denne:

regTekst2 = "^[\\wæøå,\\. -]{5,50}$" ' Hvad med accent-bogstaver ?-)
regTekst2.IgnoreCase = True

ikke se nogenlunde således ud:

regTekst2 = "^[\\a-zæøå,\\. -,\\0-9]{5,50}$"
regTekst2.IgnoreCase = True

Altså med tal og med a-æøå i stedet for wæøå?
Avatar billede roenving Novice
24. oktober 2005 - 15:07 #6
\w betyder ord-tegn, og dækker som minimum a-z, 0-9 og _ !-)
Avatar billede apo Praktikant
24. oktober 2005 - 16:38 #7
Allrighty then. Kan du give en kort forklaring af syntaxen for de sætninger du har vist?
Avatar billede roenving Novice
24. oktober 2005 - 16:56 #8
^$ betyder henholdsvis starten og slutningen af tekst-strengen, så vi de fleste steder tester hele strengen ...
. betyder et hvilkensomhelst tegn, også f.eks. tabulator og §
* betyder 0 eller flere af den foran (kan også skrives {0,}
? betyder: Vær ikke grådig, som en regexp normalt er (at den tager så meget som muligt med !-)

-- så .*? betyder 0 eller flere tegn af en hvilkensomhelst slags, men kun til der første gang kommer tegnet lige efter ...

\w betyder som sagt ordtegn (og jeg er faktisk ikke sikker på, at der skal dobbelt-escapes i VBscript !-)

[] betyder en blok indeholdende tegn, som må forekomme (eller ikke forekomme)
a-z betyder en range, altså a, b, c ... z
{2,6} betyder mindst 2 og højest 6 tegn, i {} kan det første eller sidste tal udelades, så enden bliver åben

+ betyder en eller flere ({1,}

Så mail-tingen oversættes til:
Der skal fra starten af teksten være 0 eller flere tegn foran @-tegnet, derefter skal der være et ordtegn efterfulgt af et eller flere ord-tegn, '-' eller '.', efter det et punktum og så 2-6 bogstaver i rangen a-z til slutningen !-)

\s betyder whitespace, og så opdagede jeg lige en fejl, som jeg så lige kan reparere, for [] kan også betyde 'må ikke forekomme' sådan: [^\s] (test selv evt. dobbelt-escaping -- altså \\s !-)

regMailLength = "^[^\\s]{6,60}$"

-- spørg selv videre ...
Avatar billede apo Praktikant
24. oktober 2005 - 17:41 #9
Har du evt. et link til en side med en oversigt?

Læg et svar, der er points :-)
Avatar billede roenving Novice
24. oktober 2005 - 17:45 #10
Avatar billede roenving Novice
24. oktober 2005 - 17:48 #11
-- og der kan du så også se, at der _ikke_ skal dobbeltescapes i VBScript !-)
Avatar billede apo Praktikant
24. oktober 2005 - 18:15 #12
Ah, jeg havde ikke lige forestillet mig, at MS lå inde med den slags. Så må jeg i gang med at lege med regulære udtryk :-)

Tak for hjælpen!

// Lukker
Avatar billede roenving Novice
24. oktober 2005 - 18:17 #13
-- og jeg takker for point ;~}
Avatar billede apo Praktikant
24. oktober 2005 - 18:17 #14
Hov...

"Hrm, det bliver nødvendigt med sammensatte funktioner, for jeg ville ikke begynde at sammensætte funktioner i regexps !-)"

Hvad betyder det?
Avatar billede roenving Novice
24. oktober 2005 - 18:23 #15
At der i ovenstående er to forskellige til først at teste email-formatet og derefter lægden !-)
Avatar billede roenving Novice
24. oktober 2005 - 18:23 #16
... f.eks. er ...
Avatar billede apo Praktikant
25. oktober 2005 - 02:40 #17
Okay, tak :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester