Schrift
[thread]6021[/thread]

Prüfen, ob Zahl oder Prozentzahl



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
stb2050
 2004-01-17 18:03
#79228 #79228
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
Hi Ihr,

in einem Feld soll der Benutzer nur Werte als Zahl, z.B. 23 oder als Prozentzahl, z.B. 50% eingeben können.

Wie kann ich prüfen, ob die Eingabe gültig war bzw. wie muss die Regex dafür aussehen?

Alle anderen Eingaben, z.B. Texte oder auch %50 sollen ungültig sein. Es sollen auch nur ganze Zahlen zugelassen werden, keine Komma-Zahlen.

Viele Grüße & vielen Dank
Steffen\n\n

<!--EDIT|stb2050|1074355476-->
pktm
 2004-01-17 18:08
#79229 #79229
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Code: (dl )
1
2
3
unless( $input =~ m/\d{1,3}\%/ ){
# fehler, eingabe nicht gültig
}

Prüft auf 1 bis 3 Ziffern (0 bis 100) und ein Prozentzeichen im Anschluss.
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
[E|B]
 2004-01-17 18:08
#79230 #79230
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
HiHo!

Code: (dl )
1
2
3
4
$string = "f4\%";
if($string !~ /^\d{1,3}\%$|^\d+$/){
print "Ungueltig!";
}
\n\n

<!--EDIT|[E|B]|1074356179-->
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
[E|B]
 2004-01-17 18:17
#79231 #79231
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
@pktm

Dein RegExp schließt nicht alle Möglichkeiten ein!
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
stb2050
 2004-01-17 19:10
#79232 #79232
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
[E|B
,17.01.2004, 17:08]HiHo!

Code: (dl )
1
2
3
4
$string = "f4\%";
if($string !~ /^\d{1,3}\%$|^\d+$/){
        print "Ungueltig!";
}

Hi Erik,

danke erstmal für deine Antwort :-)

Ich verstehe nicht ganz, was die Zeile

$string = "f4\%";

bedeutet. Ist das nur ein Beispiel oder hat die Zeile eine Funktion?

Und was würde passieren, wenn ich eine 4stellige Zahl eingebe? Nicht-%-Zahlen sollen ja auch 4stellig möglich sein.

Viele Grüße & vielen Dank
Steffen
[E|B]
 2004-01-17 19:15
#79233 #79233
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
$string ist nur ein Test!
Wenn bei den Prozentzahlen vier Zahlen zugelassen werden sollen, musst du folgendes schreiben:

Code: (dl )
1
2
3
if($string !~ /^\d{1,4}\%$|^\d+$/){
print "Ungueltig!";
}
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
eisbeer
 2004-01-17 19:25
#79234 #79234
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das ist nur ein Beispiel von ihm. Der Backslash vor dem
% escaped das zeichen nur, heisst, dass das Zeichen für
den Perlinterpret keinen Hash darstellt, was eben ein %
normalerweise einleitet.

Meine Version:
Code: (dl )
1
2
3
4
5
6
7
$Usereingabe = '2%';
unless ($Usereingabe =~/^\d{1,3}(?:\%|\d*)$/) {
print "Fehler";
}
else {
print "OK";
}


Erlaubt:

55%
55
1234
1234% nicht
2%
2
aber auch 555%, blöderweise...
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
stb2050
 2004-01-17 19:47
#79235 #79235
User since
2003-08-14
87 Artikel
BenutzerIn
[default_avatar]
Hi eisbeer,

danke dir. Funktioniert schon super, aber ...

Mir ist noch etwas eingefallen. Die Eingabe * (also Sternchen) soll auch erlaubt sein. Kann man das noch irgendwie einbauen?

Also nicht * mit Kombination anderer Dinge, z.B. 44*, sondern nur das * als einzelnes Zeichen.

Viele Grüße & vielen Dank
Steffen
DS
 2004-01-17 19:57
#79236 #79236
User since
2003-08-04
247 Artikel
BenutzerIn
[default_avatar]
Höhen- oder Breitenabgabe in einem Frameset? Würde heißen keine Prozentwerte über 100% und keine negativen Werte...

Code: (dl )
$eingabe =~ /^(?:((?>\d+))(??{ $1 <= 100 ? '\%?': '' })|\*)$/
\n\n

<!--EDIT|DS|1074362510-->
[E|B]
 2004-01-17 20:00
#79237 #79237
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
if($string !~ /^\d{1,4}\%$|^\d+$|^\*$/){
print "Ungueltig!";
}
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2004-01-17 18:03.