2016-05-02 9 views
1

Im Moment habe ich diesen PHP-Code:PHP - Was Regex sollte ich verwenden, um eine Eingabe zu validieren, um entweder leer oder 4 Ziffern zu sein?

$pCode = $_POST["postcode"]; 
if (!empty($pCode)) { 
    $pCodePattern = "/^\d{4}$/"; 
    if (!preg_match($pCodePattern, $pCode)) { 
     $pCodeMsg = "<span> post code must be 4 digits </span>"; 
    } 
} 

Wenn ich den Code der Fehlermeldung ausgeführt wird, nach wie vor angezeigt.

+0

'^ (\ d {4} | \ s *) $' – rock321987

+0

Sie auch verwenden können: Für einfache –

Antwort

0

Sie müssen angeben, dass das \d{4} Muster optional sein kann:

$pCodePattern = "/^(?:\d{4})?$/"; 
        ^^^  ^^ 

Siehe regex demo

Muster Details:

  • ^ - Beginn der stirng
  • .210 - Beginn einer optionalen nicht-einfangende Gruppe (der ? quantifier einstimmt Eins oder Null Vorkommen)
    • \d{4} - 4 Ziffern
  • )? - Ende der optional nicht-einfangende Gruppe
  • $ - Ende Schnur
+1

danke , das funktionierte – nanjero05

+0

Froh, dass es für Sie arbeitete. Bitte bedenken Sie auch, dass eine Antwort hilfreich ist, wenn meine Antwort für Sie hilfreich war (siehe [Wie kann ich auf Stack Overflow upvoten?] (Http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow)) . –

0
$pCode = $_POST["postcode"]; 
if (!empty($pCode)) { 
    $pCodePattern = "^(\d{4}|\s*)$"; 
    if (!preg_match($pCodePattern, $pCode)) { 
     $pCodeMsg = "<span> post code must be 4 digits </span>"; 
    } 
} 
1

Sie können dies tun, ohne Regex

$pCode = $_POST["postcode"]; 
    $len=1; 
    while ($pCode >= 10) 
    { 
     $pCode = ($pCode/10); 
     ++$len; 
    } 
    if($len != 4){ 
    $pCodeMsg = "<span> post code must be 4 digits </span>"; 
    } 
Verwandte Themen