![]() |
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:
Leider gibt er mir aus, dass $var nur aus Zahlen besteht.
<?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); ?> 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 |
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 |
Re: RegEx-Verständnisproblem: Ganzzahlen
Wenn dann, müsste es so heißen:
Code:
weil sonst der Punkt noch überprüft wird.
$pattern = "/(0-9)$/i"
Obs so stimmt weiß ich aber auch nicht genau, da ich mich damit auch nicht sonderlich auskenne. |
Re: RegEx-Verständnisproblem: Ganzzahlen
:P
Code:
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.
$pattern = '#^\d+$#';
Zur Ergänzung, der hier für float:
Code:
Danke Euch beiden. :)
$pattern = '#^[0-9]+(\.([0-9]+))?$#';
|
Re: RegEx-Verständnisproblem: Ganzzahlen
Ah super - und auch wieder was gelernt. :cheers:
|
Re: RegEx-Verständnisproblem: Ganzzahlen
Ich hab mir das jetzt nochmal genauer angesehen. Ist eigentlich gar nicht so kompliziert.
Code:
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.
$pattern = '#^\d+$#';
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:
Eckige Klammern [] geben einen Bereich an und Runde Klammern sind zur Abgrenzung da also ähnlich wie in der Mathematik.
$pattern = '#^[0-9]+(\.([0-9]+))?$#';
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. |
Re: RegEx-Verständnisproblem: Ganzzahlen
Jupp,
![]() |
Re: RegEx-Verständnisproblem: Ganzzahlen
![]() |
Re: RegEx-Verständnisproblem: Ganzzahlen
Da mag ich die Seite
![]() |
Re: RegEx-Verständnisproblem: Ganzzahlen
Ok hab den Link gefunden.
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz