webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Webbutveckling > Javascript

Javascript Här diskuteras det som rör Javascript, AJAX, DOM & DHTML.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2001-09-20, 19:08   #1
Harback
Medlem
 
Registrerad: 2001-06-19
Inlägg: 212
Lösningar: 1
meddelande Regexp...

Hejsan.

Använder mig av följande kod för att validera ett nummer-fält:

Kod:
<!--
function kontrollera(obj){
var svar = obj.svar.value;
var pattern = /^((\d+)&#0124;(\d+[\.,]\d+))(([Ee])-?\d+)?$/;
flag = pattern.test(svar);
if(flag){
return true;
}
else{
alert("Du måste skriva in ett tal.");
document.fraga.svar.focus();
return false;
}
}
//-->
Kom på att nu kan ju någon bara skriva in en nolla som inte är tillåtet i mitt fall. Satt och försökte knåpa ihop en lösning i pattern men kom inte på nån. Är det någon som kan hjälpa mig?

------------------
MVH
Harback
__________________
mvh
Harback
HiFiguiden.nu
Harback besöker inte forumet just nu   Svara med citat
Äldre 2001-09-20, 19:26   #2
Erik Juhlin
Medlem
 
Erik Juhlins avatar
 
Registrerad: 2000-05-27
Ort: Helsingborg
Inlägg: 7 625
Lösningar: 623
meddelande

Jag hade nog skrivit ungefär så här.
Kod:
function kontrollera(obj) {
	var svar = obj.svar.value;
	if (isNaN(svar)) {
		alert("Du måste skriva in ett tal.");
		document.fraga.svar.focus();
		return false;
	} else if (svar < 1) {
		alert("Talet får inte vara mindre än noll.");
		document.fraga.svar.focus();
		return false;
	} else {
		return true;
	}
}
Inga regulära uttryck alltså..

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

[Redigerat av Erik Juhlin den 20 sep 2001]
Erik Juhlin besöker inte forumet just nu   Svara med citat
Äldre 2001-09-20, 19:45   #3
Jojoxx
Moderator
 
Registrerad: 2000-06-18
Inlägg: 4 195
Lösningar: 246
meddelande


Ja. Regexp är smidigt, men kanske lite överarbetat i ett sådant exempel.

------------------
/ J
__________________
/ Jojoxx

"Always remember that you're unique and special, just like everyone else..."
Jojoxx besöker inte forumet just nu   Svara med citat
Äldre 2001-09-20, 20:24   #4
Harback
Medlem
 
Registrerad: 2001-06-19
Inlägg: 212
Lösningar: 1
meddelande

Jag använder inte bara Regular Expressions för att det är tufft utan också för att man ska kunna skriva både punkt (.) och komma (,). Går det att lösa med Regular Expressions att man inte får skriva bara noll?

------------------
MVH
Harback

[Redigerat av Harback den 20 sep 2001]
__________________
mvh
Harback
HiFiguiden.nu
Harback besöker inte forumet just nu   Svara med citat
Äldre 2001-09-21, 09:01   #5
peterbladh
Medlem
 
Registrerad: 2000-06-26
Ort: Kungsbacka
Inlägg: 274
Lösningar: 0
meddelande

kan du inte bara lägga till
if(flag && svar != 0)
...


------------------
/peterbladh

[Redigerat av peterbladh den 21 sep 2001]
peterbladh besöker inte forumet just nu   Svara med citat
Äldre 2001-09-21, 13:12   #6
spango
Medlem
 
spangos avatar
 
Registrerad: 2000-06-02
Ort: Söders höjder
Inlägg: 6 147
Lösningar: 755
meddelande

Citat:
Går det att lösa med Regular Expressions att man inte får skriva bara noll?
Ja, även om det är lite overkill. Så här, typ:
Kod:
var nonZeroNumber = /^[1-9]\d*([.,]\d+)?$/;
Då måste det börja med 1-9, det får följas av vilket/vilka tal som helst, som antingen avslutar strängen eller efterföljs av decimaltecken (punkt eller komma) som sedan följs av en eller flera valfria nuffror.

------------------
I wasn't born with enough middle fingers
__________________
Vissa dagar är man asfalten, andra dagar är man ångvälten.
Vissa dagar är man myggan, andra dagar är man vindrutan.

XML är som våld; löser det inte ens problem betyder det att man använder för lite.
spango besöker inte forumet just nu   Svara med citat
Äldre 2001-09-21, 19:40   #7
Harback
Medlem
 
Registrerad: 2001-06-19
Inlägg: 212
Lösningar: 1
meddelande

Härligt!

------------------
MVH
Harback
__________________
mvh
Harback
HiFiguiden.nu
Harback besöker inte forumet just nu   Svara med citat
Äldre 2001-09-23, 17:46   #8
Harback
Medlem
 
Registrerad: 2001-06-19
Inlägg: 212
Lösningar: 1
meddelande

Hejsan igen!

Efter att ha testat din variant av RegExpen så kan man ju skriva t.ex. 0,0 eller 0,000 osv. Jag försökte att fixa pattern och också lägga till ifsatser men fick det inte att fungera. Kan någon fixa denna kod så att det inte går att skriva ett tal lika med noll?

Kod:
<!--
function kontrollera(obj){
var svar = obj.svar.value;
var pattern = /^(([1-9]\d*)&#0124;(\d+[\.,]\d+))$/;
flag = pattern.test(svar);
if(flag){
return true;
}
else{
alert("Du måste skriva in ett tal.");
document.fraga.svar.focus();
return false;
}
}
//-->
Tacksam för svar!

------------------
MVH
Harback

[Redigerat av Harback den 23 sep 2001]
__________________
mvh
Harback
HiFiguiden.nu
Harback besöker inte forumet just nu   Svara med citat
Äldre 2001-09-23, 18:31   #9
spango
Medlem
 
spangos avatar
 
Registrerad: 2000-06-02
Ort: Söders höjder
Inlägg: 6 147
Lösningar: 755
meddelande

Eh, hallå? Du använder inte min regexp. Jag skrev:
/^[1-9]\d*([.,]\d+)?$/
Du använder:
/^(([1-9]\d*)&#0124;(\d+[\.,]\d+))$/

Men du behöver ju verkligen inte använda regexpar! Det vore så vansinnigt mycket enklare att säga nå i stil med vad Erik sa.
Kod:
var resultat = parseFloat(foo);
if(isNaN(resultat) &#0124;&#0124; resultat == 0)
alert("hallå där!");
------------------
Does it matter that this waste of time is what makes a life for you?
__________________
Vissa dagar är man asfalten, andra dagar är man ångvälten.
Vissa dagar är man myggan, andra dagar är man vindrutan.

XML är som våld; löser det inte ens problem betyder det att man använder för lite.
spango besöker inte forumet just nu   Svara med citat
Äldre 2001-09-23, 19:49   #10
Harback
Medlem
 
Registrerad: 2001-06-19
Inlägg: 212
Lösningar: 1
meddelande

Nä, jag ändrade lite i den. Testade lite...

Men jag måste ha RegExp i ett hörn iallafall eftersom jag ska göra så att både punkt och komma kommer igenom.

Jag la till efter if(flag) den ifsats Erik körde med att om svar < 1 (egentligen borde det ju vara svar = 0?)så går det inte men jag fick det inte att fungera. Kan någon hjälpa mig att lägga ihop dom satserna eller ska jag göra på något annat sätt kanske?

------------------
MVH
Harback
__________________
mvh
Harback
HiFiguiden.nu
Harback besöker inte forumet just nu   Svara med citat
Äldre 2001-09-23, 20:25   #11
Jojoxx
Moderator
 
Registrerad: 2000-06-18
Inlägg: 4 195
Lösningar: 246
meddelande

Citat:
Men jag måste ha RegExp i ett hörn iallafall eftersom jag ska göra så att både punkt och komma kommer igenom.
Men använd då ett regexp för att få ett validt decimaltal.

var svar=obj.svar.value.replace(/,/,'.');

------------------
/ J

[Redigerat av Jojoxx den 23 sep 2001]
__________________
/ Jojoxx

"Always remember that you're unique and special, just like everyone else..."
Jojoxx besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Webbutveckling > Javascript

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 16:04.


Powered by: vBulletin Version 3.8.6
Copyright © webForum