Antworten auf deine Fragen:
Neues Thema erstellen

RegExpr funktioniert nicht genau

webarchitekt

Noch nicht viel geschrieben

Hallo

Ziel:
Ich möchte eine dt. Vorwahl (0 plus 2-4 Ziffern) per regExpr überprüfen.

Habe nun viel gelesen und ausprobiert, es funktioniert nicht ganz wie ich möchte.

PHP:
$preg_vorwahl = "(^[0]([0-9]{2,4})$)";
    if(!preg_match("/$preg_vorwahl/", $vorwahl))
            {
             echo "Vorwahl ist nicht korrekt";
            }
habs u.a auch so versucht - ohne Erfolg
PHP:
$preg_vorwahl = "(^[0][0-9]{2,4})$";
Das kommt heraus:

0 - Keine Fehlermeldung (soll aber !)
01 - Fehlermeldung (richtig)
011 - Fehlermeldung (richtig)
011 - Keine Fehlermeldung (richtig)
0111 - Keine Fehlermeldung (richtig)
01111 - Keine Fehlermeldung (richtig)
011111 - Fehlermeldung (richtig)
12345 - Fehlermeldung (richtig)
1234 - Fehlermeldung (richtig)
123 - Fehlermeldung (richtig)
12 - Fehlermeldung (richtig)
1 - Fehlermeldung (richtig)

Ich weiß nicht weiter. Wo liegt mein Denkfehler?
Ich bitte euch um Hilfe.

Danke
Rolf
 
Zuletzt bearbeitet:

netbandit

Aktives Mitglied

AW: RegExpr funktioniert nicht genau

Funktionieren beide Suchmuster. Und warum sollten bei 011, 0111 und 01111 Fehlermeldungen erscheinen? Sind doch richtig :uhm:

Suchmuster könntest Du allerdings noch ein wenig kürzen. Die veielen Klammern brauchst Du gar nicht.

PHP:
<?PHP
$nm=array('0', '01', '011', '0111', '01111', '011111', '12345', '1234', '123', '12', '1');

$preg_vorwahl = "^0([0-9]){2,4}$";
#$preg_vorwahl = "^0[0-9]{2,4}$"; würde auch funktionieren

foreach($nm as $vorwahl)
    {
    if(!preg_match('/' . $preg_vorwahl . '/', $vorwahl))
        {
        echo '<b>Vorwahl ist nicht korrekt (' . $vorwahl . ')</b><br>';
    }
    else
        {
        echo 'Vorwahl passt (' . $vorwahl . ')<br>';
    }
}
?>
 

webarchitekt

Noch nicht viel geschrieben

AW: RegExpr funktioniert nicht genau

@netbandit
Erst einmal Danke für Deine Antwort.
Ich bin nicht sicher, ob ich richtig verstanden wurde.

Eine Vorwahl setzt sich aus der 0 und 2-4 Ziffern zusammen.

Gebe ich nur die Null ins Eingabefeld ein, ist das ja keine korrekte Vorwahl.
Das Ergebnis des Suchmusters ist in diesem Falle aber : keine Fehlermeldung.

Da bastele ich nun herum und finde den fehler nicht.

Vielleicht kannst Du mir hier einen Tip geben?
 

saila

Moderatorle

AW: RegExpr funktioniert nicht genau

Hi,

was du suchst ist:
PHP:
<?php
$number = '01234';
$strl = strlen($number);

if($strl > 3 && $strl <= 5) {
    if(preg_match('#0[1-9]{2,4}#', $number, $find)) {
        echo $number .'<br>';
        echo '<pre>'; print_r($find); echo '</pre>';
    } else {
        echo 'Die Vorwahl ist nicht gültig.';
    }
} else {
    echo 'Die Vorwahl ist zu kurz oder zu lang';
}
?>
Das Problem bei preg_match ist, wenn die Eingabe z.B. > als 5 Zeichen ist, wird bei korrekter Eingabe der Wert lediglich auf 5 gekürzt und als korrekt angegeben. Deshalb die Prüfung auf die Länger des String vorweg.

print_r ist natürlich nur für dich, um zu sehen, wie das gefundene Ergebnis aus preg_match aussieht.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben