HarbackMedlem sedan juni 2001206 inlägg Hejsan.
Jag har ett text-formulär där besökaren kan fylla i ett tal. För att förhindra att det skrivs i en massa andra saker (t.ex. bokstäver) har jag löst detta med Regular Expressions. I pattern har jag också tillåtit att besökaren kan skriva punkt och komma. Problemet ligger i att om besökaren t.ex. skriver 2 punkter, 1 punkt och ett komma osv så blir det ju förstås fel.
Är det någon som kan lösa detta så att detta förhindras?
------------------
MVH
Harback
nicclasMedlem sedan feb. 20001 050 inlägg Prova att matcha mot regexpen:
"^-?\d*([\.,])?\d*([Ee])?-?\d*$"
om du tycker tex ".5" och ",5" är ok. Vill du tvinga fram "0.5" osv välj denna:
"^-?\d+([\.,])?\d*([Ee])?-?\d*$"
Regexpen klarar också tal som "-1.23e-4" osv...
/nicclas - www.nyhetsrubriker.com
[Redigerat av nicclas den 31 jul 2001]
HarbackMedlem sedan juni 2001206 inlägg Tack nicclas! Äntligen någon som hjälper till. Ska testa det senare ikväll. Återkommer om hur det gick.
------------------
MVH
Harback
HarbackMedlem sedan juni 2001206 inlägg Det funkade kanonbra efter en del pillande....slutpattern blev så här (förbjudet att skriva negativa tal i mitt fall):
^\d+([\.,])?\d*([Ee])?\d*$
Tack så mycket för hjälpen!
------------------
MVH
Harback
[Redigerat av Harback den 31 jul 2001]
nicclasMedlem sedan feb. 20001 050 inlägg Du förbjuder dessutom tal som "1.0e-4" som ju inte är negativt ;)
Ja ja det är ju inte så vanligt att man matar in på exponent-form.
HarbackMedlem sedan juni 2001206 inlägg Ajdu, det tänkte jag inte på, får ta och lägga till det. :r
Men för den delen är det nog som du säger, det är nog inte så många som kommer att skriva in så små tal...iallafall inte i mitt fall.
------------------
MVH
Harback
[Redigerat av Harback den 01 aug 2001]
HarbackMedlem sedan juni 2001206 inlägg Jag tänkte på en grej till. Ifall jag vill att man ska kunna skriva in bara .5 och ,5 så använder jag ju pattern:
^-?\d*([\.,])?\d*([Ee])?-?\d*$
Men då uppkommer ytterliggare ett problem ifall någon bov skriver bara punkt eller komma. Då släpper ju pattern igenom det. Går det att lösa så att det måste iallfall vara siffror på någon sida av punkten eller kommat?
------------------
MVH
Harback
nicclasMedlem sedan feb. 20001 050 inlägg Prova denna:
^-?\d*((\d+[\.,])|([\.,]\d+))?\d*([Ee])?-?\d*$
Nä, så här skall det nog fungera
^-?\d*((\d+[\.,])|([\.,]\d+))?\d*(([Ee])-?\d+)?$
(i den tidigare matchas "1.34e" vilket inte är ett tal).
Usch vad jobbigt det blir om man vill vara säker på att allt är korrekt ;)
/nicclas - www.nyhetsrubriker.com
[Redigerat av nicclas den 01 aug 2001]
HarbackMedlem sedan juni 2001206 inlägg Tackar...jag modifierade ditt andra förslag lite, fixade så att det inte gick att skriva typ 5434, (eller punkt) utan någon decimal. Jag tog också bort en onödig \d*
Här är ditt förslag (det fetstilta tog jag bort):
^-?\d*((\d+[\.,])|([\.,]\d+))?[b]\d*[/b](([Ee])-?\d+)?$
Så här blev pattern (det fetstilta la jag till):
^-?\d*((\d+[\.,][b]\d+[/b])|([\.,]\d+))?(([Ee])-?\d+)?$
Hittar du någon bugg?
------------------
MVH
Harback
[Redigerat av Harback den 01 aug 2001]