Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   RegEx-Verständnisproblem: Ganzzahlen (https://www.delphipraxis.net/113649-regex-verstaendnisproblem-ganzzahlen.html)

Die Muhkuh 12. Mai 2008 11:49


RegEx-Verständnisproblem: Ganzzahlen
 
Hi,

ich tue mich gerade an den RegExen mal wieder sehr schwer und das bei einem so einfachen.

Ich möchte überprüfen, ob in $var nur Zahlen und hab mir folgendes ausgedacht:

Code:
<?php
  $var = '24e2';
  $pattern = '#[0-9]+#';
 
  if ($val = preg_match($pattern, $var)) {
     echo $var . ' besteht nur aus Zahlen';
  }
  else {
     echo $var . ' besteht nicht nur aus Zahlen';
  }
 
  echo '
';
  var_dump($val);
?>
Leider gibt er mir aus, dass $var nur aus Zahlen besteht.
Ich könnte das ganze in diesem Fall auch mit ctype_digit machen, aber das ganze soll später noch auf float ausgebaut werden, deswegen möchte ich auch die positiven Ganzzahlen per RegEx herausfinden.

Grüße

Nuclear-Ping 12. Mai 2008 11:58

Re: RegEx-Verständnisproblem: Ganzzahlen
 
Hab zwar kein Plan von regulären Ausdrücken, aber damals als ich's brauchte hab ich immer einen angehauen. :mrgreen:

Das Pattern "/\.(jpg|jpeg|gif|bmp|png)$/i" prüft, ob eine Erweiterung in nem Dateinamen vorkommt. Theoretisch kann man das doch einfach umbauen? Probier mal $pattern = "/\.(0-9)$/i" :P

Brainstalker 12. Mai 2008 12:07

Re: RegEx-Verständnisproblem: Ganzzahlen
 
Wenn dann, müsste es so heißen:
Code:
$pattern = "/(0-9)$/i"
weil sonst der Punkt noch überprüft wird.
Obs so stimmt weiß ich aber auch nicht genau, da ich mich damit auch nicht sonderlich auskenne.

Die Muhkuh 12. Mai 2008 12:08

Re: RegEx-Verständnisproblem: Ganzzahlen
 
:P

Code:
$pattern = '#^\d+$#';
Mit dem hier funktioniert das ganze. Ich glaub, ich versteh es so halbwegs. Ich hab bei anderen RegEx abgeschaut, die aber über mehrere Zeilen hinweg funktioniert, die haben nicht das mit dem ^ und $. Wenn ich die weglasse, funktioniert es auch nicht mehr.

Zur Ergänzung, der hier für float:

Code:
$pattern = '#^[0-9]+(\.([0-9]+))?$#';
Danke Euch beiden. :)

Nuclear-Ping 12. Mai 2008 12:13

Re: RegEx-Verständnisproblem: Ganzzahlen
 
Ah super - und auch wieder was gelernt. :cheers:

Brainstalker 12. Mai 2008 13:17

Re: RegEx-Verständnisproblem: Ganzzahlen
 
Ich hab mir das jetzt nochmal genauer angesehen. Ist eigentlich gar nicht so kompliziert.
Code:
$pattern = '#^\d+$#';
Die Rauten sind die Begrenzung des Patterns. Statt dessen kann zb. auch ein Slash / oder ein Ausrufezeichen ! benutzt werden. Man darf nur keinen Backslash \ verwenden.
Das Zirkumflex ^ steht für den Anfang der Zeichenkette und das $ für das Ende der Zeichenkette.
\d gibt eine Ganzzahl an und das Plus + dahinter das ein oder mehr Zeichen vorkommen dürfen.

Code:
$pattern = '#^[0-9]+(\.([0-9]+))?$#';
Eckige Klammern [] geben einen Bereich an und Runde Klammern sind zur Abgrenzung da also ähnlich wie in der Mathematik.
Das Fragezeichen ? steht für 0 oder 1 Vorkommen das Ausdrucks.

Müsste so stimmen hoffe ich. Ich hatte noch irgendwo nen Link, ich werd den mal rauskramen und dann hier posten.

Die Muhkuh 12. Mai 2008 13:20

Re: RegEx-Verständnisproblem: Ganzzahlen
 
Jupp, hier gibt's das ganze schön erklärt.

DeddyH 12. Mai 2008 13:21

Re: RegEx-Verständnisproblem: Ganzzahlen
 
Hier kannst Du mehr nachlesen und Deine Regenechse auch testen.

Die Muhkuh 12. Mai 2008 13:24

Re: RegEx-Verständnisproblem: Ganzzahlen
 
Da mag ich die Seite hier lieber. Da braucht man die Modifier nicht anklicken und das ganze wird auch mit pcre ausgewertet.

Brainstalker 12. Mai 2008 13:27

Re: RegEx-Verständnisproblem: Ganzzahlen
 
Ok hab den Link gefunden. Hier gibt es auch noch mal ne kurze Erklärung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz