2016-04-24 14 views
-2

Ich muss überprüfen, dass die albumID Eingabe 2 Großbuchstaben und 3 Zahlen ist. Ich benutzte http://regexr.com/ und auch http://www.tutorialspoint.com/php/php_preg_match.htm zu bestätigen, dass dieseRegex preg_match funktioniert nicht, um alphabetische Großbuchstaben und numerische albumID zu entsprechen

preg_match('/([A-Z]{2}[0-9]{3})/', $albumid) 

funktionieren sollte, aber es ist nicht:

 <?php 
     // define variables and set to empty values 
      $albumidErr = $albumid = ""; 
     if ($_SERVER["REQUEST_METHOD"] == "POST") { 
      if (preg_match('/([A-Z]{2}[0-9]{3})/', $albumid)) 
      { 
      $albumid = test_input($_POST["albumid"]); 
      $albumidErr = print $albumid; 
      } 
      else { 
      $albumidErr = " Album ID must be 2 Uppercase letters and 3 numbers (i.e. BI010)"; 
      } 

     } 
     ?> 
     <form method="post" action=" 
     <?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
     <p> 
      <label for="albumid">*Album ID:</label> 
      <?php echo $albumidErr;?><br> 
      <input type="text" name="albumid" id="albumid"/> 
     </p> 

     <p> 
      <input type="submit" name="submit" id="submit" value="submit"/> 
     </p> 
    </form> 
+0

es wird nicht funktionieren, weil es nicht richtig – rock321987

+0

Mögliche Duplikat [regulären Ausdruck benötigen mindestens 3 zur Überprüfung Großbuchstaben, 3 Kleinbuchstaben, 3 Ziffern und 3 Sonderzeichen] (http://stackoverflow.com/questions/16689167/need-regular-expression-for-checking-at-least-3-uppercase-3-lowercase-3-digits) – rock321987

+1

Wenn Sie genaue Spezifikationen/Anforderungen angeben und beschreiben, wie Ihre Regex d oes nicht und sollte funktionieren. In Ihrem Code geben Sie ein Beispiel "BI010" an, aber es wird mit "[A-Z] {2} [0-9] {3}" verglichen. Möchten Sie es als * ganze Zeichenfolge * (vollständige Übereinstimmung) zuordnen? Siehe [** PHP preg_match full string **] (http://stackoverflow.com/questions/16375856/php-preg-match-full-string). –

Antwort

0

In Ihrem Code:

$albumidErr = $albumid = ""; 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (preg_match('/([A-Z]{2}[0-9]{3})/', $albumid)) 

Sie machen $albumid leer Sie dann versuchen, die Regex mit dieser leeren Zeichenfolge übereinstimmen, stimmt natürlich nicht überein.

Ich glaube, Sie wollen:

$albumidErr = $albumid = ""; 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (preg_match('/([A-Z]{2}[0-9]{3})/', $_POST["albumid"])) 
    //          ^^^^^^^^^^^^^^^^^ 

und Sie können Anker hinzu:

$albumidErr = $albumid = ""; 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (preg_match('/^([A-Z]{2}[0-9]{3})$/', $_POST["albumid"])) 
+0

Danke. Ich wusste, dass ich so ein dummer Fehler war, konnte es einfach nicht sehen. – towhomitmay11

+0

@ whitness11: Kein Problem, jeder Körper hat diese Art von Fehler gemacht – Toto