---
title: "Formvalidering med RegExp"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/169446-formvalidering-med-regexp"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Nate.A"
published: "2008-02-28T21:45:55.000Z"
updated: "2008-02-29T11:42:26.000Z"
replies: 5
views: 605
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/javascript/169446-formvalidering-med-regexp"
---

# Formvalidering med RegExp

## #1 — Nate.A, 2008-02-28T21:45Z

Hej

Jag får inte ordning på min formulär validering. Jag har testat min Regexp i ett testscript, så det ska fungera, men av någon anledning så vägrar scriptet godkänna datumet fast det ska matcha regexp. Jag har stirrat mig blind på det här i flera timmar nu....   :( 

js:

```
<script language="javascript">
function validera()
{
	var form_hemmalag  = document.getElementById('hemmalag');
	var form_bortalag  = document.getElementById('bortalag');
	var form_datum	   = document.getElementById('datum');
	var form_tid	   = document.getElementById('tid');
	var datum_ptn 	   = new RegExp("\d\d\d\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])"); 
	var tid_ptn		   = new RegExp("(0[0-9]|1[0-9]|2[01234])[:][0-5][0-9]");
	var felmeddelanden = '';
	
	if (form_hemmalag.value == form_bortalag.value) 
	{
		form_hemmalag.style.backgroundColor='#fdd';
		form_bortalag.style.backgroundColor='#fdd';
		felmeddelanden += '- Laget kan inte spela mot sig själva! \n';
	}

	if (form_datum.value =='' || form_datum.value==null)
	{
		form_datum.style.backgroundColor = '#fdd';
		felmeddelanden += '- Du måste ange datum. \n';
	}
	else if (datum_ptn.test(form_datum.value) == false)
	{
		form_datum.style.backgroundColor = '#fdd';
		felmeddelanden += '- Felaktigt datum, formatet ska vara åååå-mm-dd \n';
	}
	
	if (tid_ptn.test(form_tid.value) == false)
	{
		form_tid.style.backgroundColor ='#fdd';
		felmeddelanden += '- Du måste ange tid i korrekt format. (hh:mm) \n';
	}
	
	if (felmeddelanden.length >1)
	{
		alert('Följande fel hittades:\n' + felmeddelanden);
		return false
	}
	else {return true}

}
</script>
```

 

alt. testa [här](http://www.aikon.se/temp/test.htm) .

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

## #2 — nitro2k01, 2008-02-28T22:36Z

Felet beror på att \\d tolkas om när det ligger i en sträng. \\d tolkas i själva verket bara som d. Du kan lösa det på två sätt.
1) Du kan escapa \\. Alltså:
**var datum_ptn 	   = new RegExp("\\\\d\\\\d\\\\d\\\\d\[-\](0\[1-9\]\|1\[012\])\[-\](0\[1-9\]\|\[12\]\[0-9\]\|3\[01\])");** 
2) Eller så kan du skriva regexpen med slash-notation
**var datum_ptn 	   = /\\d\\d\\d\\d\[-\](0\[1-9\]\|1\[012\])\[-\](0\[1-9\]\|\[12\]\[0-9\]\|3\[01\])/**

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

## #3 — Nate.A, 2008-02-28T23:28Z

Tackar! Du e en klippa nitro2k01!
Nu räddade du min nattsömn :)

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

## #4 — nitro2k01, 2008-02-29T00:29Z

Just ja, en sak till. De regexparna matchar bara datumsträngen, men kräver inte att strängen bara består av datumsträngen. Alltså, alla strängar passerar valideringen så länge de innehåller *något* som validerar mot datum-regexpen, oavsett om användaren har skrivit något mer innan eller efter. xxx2007-03-18yyy skulle alltså validera med din regexp.
Mitt förslag: Använd ^ och $ som matchar mot början resp. slutet av en sträng. 
Alltså:

```
	var datum_ptn 	   = /^\d\d\d\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])$/; 
	var tid_ptn		   = /^(0[0-9]|1[0-9]|2[01234])[:][0-5][0-9]$/;
```

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

## #5 — colione, 2008-02-29T11:02Z

Gah, jag får ocd när jag ser fyra st \\d i rad. Det är inget fel, men det ser så fult ut :D

```
var datum_ptn 	   = /^\d{4}[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])$/;
```

Ahh, sådär...nu är min värld i ordning igen!

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

## #6 — Nate.A, 2008-02-29T11:42Z

aha.. då har jag lärt mig något nytt idag med :)

Tack till er båda!

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/169446-formvalidering-med-regexp
