/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Regular expressions
Fra : Jesper Stocholm


Dato : 17-08-01 11:53

Til brug for check af indhold i et formelement har jeg behov for
at konstruere et regExp der kan matche dette mønster:

YYYY-MM-DD hh:mm:ss

Jeg er fint tilfreds, hvis det blot kan checke på, at alle
karakterer er heltal ... dvs at den fx vil acceptere datoen

9999-99-99 99:99:99

Kan I hjælpe mig med det ... eller henvise mig til et sted, hvor
jeg kan læse mere om det ?



Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Marc Eley (17-08-2001)
Kommentar
Fra : Marc Eley


Dato : 17-08-01 12:42

in article 9lit29$m9a$1@sunsite.dk, Jesper Stocholm at spam@stocholm.dk
wrote on 17/08/01 12:52 PM:

> Til brug for check af indhold i et formelement har jeg behov for
> at konstruere et regExp der kan matche dette mønster:
>
> YYYY-MM-DD hh:mm:ss
>
> Jeg er fint tilfreds, hvis det blot kan checke på, at alle
> karakterer er heltal ... dvs at den fx vil acceptere datoen
>
> 9999-99-99 99:99:99
>
> Kan I hjælpe mig med det ... eller henvise mig til et sted, hvor
> jeg kan læse mere om det ?

O'reilly har vist den ultimative bog om RegEx:

http://www.oreilly.com/catalog/regex/

--
/marc eley

http://www.grandissue.com


Peter Brodersen (17-08-2001)
Kommentar
Fra : Peter Brodersen


Dato : 17-08-01 13:40

On Fri, 17 Aug 2001 10:52:58 +0000 (UTC), Jesper Stocholm
<spam@stocholm.dk> wrote:

>YYYY-MM-DD hh:mm:ss

Simpelt check:
> [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}

Måske lidt mere forståeligt, hvis man ikke er vant til regulære
udtryk; nedenstående er identisk med ovenstående:
> [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]

(">" indsat i starten af linien for at forhindre Agent i at wrappe
linierne)

--
- Peter Brodersen

Jesper Stocholm (18-08-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 18-08-01 13:20

Peter Brodersen <professionel@nerd.dk> wrote in
news:sh8f7.529$Ay1.15304@news000.worldonline.dk:

> On Fri, 17 Aug 2001 10:52:58 +0000 (UTC), Jesper Stocholm
> <spam@stocholm.dk> wrote:
>
>>YYYY-MM-DD hh:mm:ss
>
> Simpelt check:
>> [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}
>
> Måske lidt mere forståeligt, hvis man ikke er vant til regulære
> udtryk; nedenstående er identisk med ovenstående:
>> [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]
>> [0-9][0-9]:[0-9][0-9]:[0-9][0-9]
>
> (">" indsat i starten af linien for at forhindre Agent i at wrappe
> linierne)
>

tak Peter, det var lige hvad jeg ledte efter :)

--
Jesper Stocholm
http://stocholm.dk
ICQ: 13214885
MSN Messenger: jesperstocholm at hotmail dot com

Jesper Stocholm (20-08-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 20-08-01 10:49

Peter Brodersen wrote in dk.edb.internet.webdesign.clientside:
> On Fri, 17 Aug 2001 10:52:58 +0000 (UTC), Jesper Stocholm
> <spam@stocholm.dk> wrote:
>
> >YYYY-MM-DD hh:mm:ss
>
> Simpelt check:
> > [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}
>

Jeg har nu prøvet at lege lidt med det ... men jeg kan ikke få det til at virke.
Min kode er :

alert(theForm.period_start.value);
var strRegExp = '/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/';
if (strRegExp.test(theForm.period_start.value)) {
alert('stop - wrong timestamp');
theForm.period_start.focus();
return false;
}

... men den stopper ikke scriptet korrekt ... den submitter blot formen - selvom
jeg indsætte fx. bogstaver i strengen. Alert()-boksen i første linie giver mig
den korrekte værdi i feltet - så jeg kigger ikke på en forkert værdi.

Hvad gør jeg forkert ?

Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Peter Brodersen (20-08-2001)
Kommentar
Fra : Peter Brodersen


Dato : 20-08-01 11:24

On Mon, 20 Aug 2001 09:49:16 +0000 (UTC), Jesper Stocholm
<spam@stocholm.dk> wrote:

>.. men den stopper ikke scriptet korrekt ... den submitter blot formen - selvom
>jeg indsætte fx. bogstaver i strengen. Alert()-boksen i første linie giver mig
>den korrekte værdi i feltet - så jeg kigger ikke på en forkert værdi.
>
>Hvad gør jeg forkert ?

Kommer der en alert? I så fald tror jeg, det er koden i dit form-tag,
den er gal med. Må jeg se den?

.... omend jeg ikke kan huske javascript-funktionen til at forsøge at
regexp-matche teksten. Jeg tror bare ikke at du skal have din regexp
først. Du har fx strRegExp.test - det ville jeg snarere tro skulle
være theForm.period_start.test(strRegExp)

--
- Peter Brodersen

Jesper Stocholm (20-08-2001)
Kommentar
Fra : Jesper Stocholm


Dato : 20-08-01 12:34

Peter Brodersen wrote in dk.edb.internet.webdesign.clientside:
> On Mon, 20 Aug 2001 09:49:16 +0000 (UTC), Jesper Stocholm
> <spam@stocholm.dk> wrote:
>
> >.. men den stopper ikke scriptet korrekt ... den submitter blot formen - selvom
> >jeg indsætte fx. bogstaver i strengen. Alert()-boksen i første linie giver mig
> >den korrekte værdi i feltet - så jeg kigger ikke på en forkert værdi.
> >
> >Hvad gør jeg forkert ?
>
> Kommer der en alert? I så fald tror jeg, det er koden i dit form-tag,
> den er gal med. Må jeg se den?
>

det er første linie i test-delen af det javascript jeg sendte med tidligere. Det
var blot for at se, om jeg havde fat i den rigtige værdi.

> .... omend jeg ikke kan huske javascript-funktionen til at forsøge at
> regexp-matche teksten. Jeg tror bare ikke at du skal have din regexp
> først. Du har fx strRegExp.test - det ville jeg snarere tro skulle
> være theForm.period_start.test(strRegExp)
>

efter at have makket en del med det - kombineret med søgning på Google fandt jeg ud
af denne løsning:

var strRegExp = /[2-3][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]
[0-2][0-9]:[0-5][0-9]:[0-5][0-9]/;
if (theForm.period_end.value != '' && !strRegExp.test(theForm.period_end.value)
) {
alert('The period_end field must either be empty or of the
format\n\nYYYY-MM-DD hh:mm:ss\n\nwith a valid date and time.');
theForm.period_end.focus();
return false;
}

læg mærke til, at strRegExp ikke er i plinger ... det var det tidligere. Man kan
også lave det med en eksplicit erklæring af strRegExp som et regular expression ...
som

var strRegExt = new RegExp("some name",regexp)

:)

Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408934
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste