---
title: "regexp +formulärkontroll"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/67367-regexp-formulärkontroll"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "doggelito"
published: "2003-02-05T22:57:06.000Z"
updated: "2003-02-06T15:17:29.000Z"
replies: 14
views: 389
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/67367-regexp-formulärkontroll"
---

# regexp +formulärkontroll

## #1 — doggelito, 2003-02-05T22:57Z

tänkte testa att använda regexp för att validera formulär men har inte 
pysslat så värst mycket med detta tidigare så jag behöver lite starthjälp.
tänkte börja med en datumkontroll, kan man bygga "regexpen" så 
att måste skriva nnnn-nn-nn (n=nummer, åååå-mm-dd) i formulärfältet annars larmar den?

hajjar ni eller förklarar jag som en kråka?!! :)

Permalänk: https://www.webforum.nu/p/67367

## #2 — Vide, 2003-02-05T23:06Z

Visst kan du det, mönstret borde se ut såhär:

```
.pattern = "\d{4}-\d{2}-\d{2}"
```

Hittar du inte mönstret så är det helt enkelt fel på formatet som är inmatat.

Permalänk: https://www.webforum.nu/p/941838

## #3 — doggelito, 2003-02-05T23:34Z

många tack! funkar utmärkt. :)

Permalänk: https://www.webforum.nu/p/941865

## #4 — doggelito, 2003-02-06T00:03Z

har nu kommit så här långt:

```
Function RegExpTest(exptype, strng)
	Dim regEx, retVal
	Set regEx = New RegExp
	regEx.IgnoreCase = True
	regEx.Global = True
		Select Case exptype
			Case "regEx_date"
				regEx.Pattern = "\d{4}-\d{2}-\d{2}"
			Case "regEx_email"
				regEx.Pattern = "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
		End Select
		
retVal = regEx.test(strng) 
If retVal Then
    RegExpTest = true
  Else
    RegExpTest = false
  End If

End Function

if RegExpTest("regEx_date", "2003-12-05") and RegExpTest("regEx_email", "info@test.se") then 
'insert i databas eller dyligt.
end if
```

frågor:
\- är detta ett smart sätt att hantera validering på eller?
\- om det är bra, kan man då bygga på en errorkod som skriver ut vilket av fälten som är fel ifyllt?

Permalänk: https://www.webforum.nu/p/941885

## #5 — Engine^, 2003-02-06T11:53Z

Om det är bäst vet jag inte ;)

Felhanteringen kan du sätta i dina Case-satser...

```
		Select Case exptype
			Case "regEx_date"
				regEx.Pattern = "\d{4}-\d{2}-\d{2}"
' Här lägger du bara in ett meddelande som t.ex. "Du skrev felaktigt datum"
```

Felhantering är iofs ett stort område om man vill vara konsekvent i koden. (luddig svenska...)

Permalänk: https://www.webforum.nu/p/942136

## #6 — doggelito, 2003-02-06T12:59Z

hmm, en oskriven lag säger att man inte ska ha response.write i funktioner.
man skulle ju kunna ha så här (ungefär):

```
if not RegExpTest("regEx_date", "2003-12-05") then errcode = errcode & 1
if not RegExpTest("regEx_email", "info@test.se") then errcode = errcode & 2

if len(errcode) = 0 then
'insert i databas eller dyligt.
else
    if instr(errcode, 1) then response.write "Obs! Fel datum."
end if
```

men det är som ni ser inte speciellt smidigt, inte om man har många formulärfält i alla fall.
Feltexterna lägger man så klart i egen function men alla if-taggar kvarstår dock.
kan man få det smidigare?

Permalänk: https://www.webforum.nu/p/942176

## #7 — Vide, 2003-02-06T13:03Z

Då skulle jag lägga felkoderna i en array eller dictionary som du sedan kan loopa igenom, samt ha ytterligare information i.

Permalänk: https://www.webforum.nu/p/942181

## #8 — Engine^, 2003-02-06T13:09Z

Istället för Response.Write, så går det väl att anropa en popup/alert/msgbox, som säger Fel: ditten, Funktion: datten

Felkoder kan vara bra att ha lagrat i databasen... men, som sagt, felhantering är stort och ofta svårt att få perfekt...

Permalänk: https://www.webforum.nu/p/942183

## #9 — doggelito, 2003-02-06T13:38Z

> **Vide skrev:**
>
> **Då** skulle jag lägga felkoderna i en array eller dictionary...

He, då blir man ju nyfiken på hur DU gör med felkoder eftersom du tydligen inte gör nått liknande detta.  §jr

Permalänk: https://www.webforum.nu/p/942204

## #10 — Vide, 2003-02-06T13:50Z

:)

Jag skulle lägga alla felkoder (nummerkoderna) i en funktion, i funktionen har jag en select case som binder koderna till en feltext. Så jag anropar funktionen med ett nummer och får en feltext tillbaks.

När du kör din kontroll så samlar du upp alla felkoder i en array, när det sedan är dags att skriva ut felkoderna loopar du bara igenom arrayen och hämtar samtidigt felmeddelandena och formaterar HTML-koden precis som du vill ha det.

Simpelt att hantera. :)

Permalänk: https://www.webforum.nu/p/942215

## #11 — doggelito, 2003-02-06T13:55Z

tack för infon, ska genast börja testa detta. :)

när jag ändå är i frågatagen, hur sköter du din felhantering? nått liknande?

Permalänk: https://www.webforum.nu/p/942224

## #12 — Vide, 2003-02-06T14:37Z

Hur menar du? Felhanteringen med formulär via ASP eller?

Permalänk: https://www.webforum.nu/p/942271

## #13 — doggelito, 2003-02-06T14:55Z

mm, formulärhantering med asp.

Permalänk: https://www.webforum.nu/p/942297

## #14 — Vide, 2003-02-06T15:04Z

Oftast när jag bygger t.ex webbundersökningar så automatgenerar jag alla formulärsfält, alltså har jag alla definitioner av elementen i någon slags dataform. Lägger man bara in mödan att lägga till regexp-syntax och felmeddelande i själv definitionen av de element som skall automatgenereras så har du det ganska smidigt framför dig.

Det är ganska svårt att beskriva lite mer komplex felhantering i ett inlägg, möjligtvis blir det mål för en artikel i framtiden. ;)

Permalänk: https://www.webforum.nu/p/942316

## #15 — doggelito, 2003-02-06T15:17Z

> **Vide skrev:**
>
> ...möjligtvis blir det mål för en artikel i framtiden

ser fram emot den! :bire

Permalänk: https://www.webforum.nu/p/942335

---

Tråden på webben: https://www.webforum.nu/amne/asp/67367-regexp-formulärkontroll
