Hallo,
Könnte mir jemand bitte bei der folgenden Aufgabe weiterhelfen?
Man sollte folgende Bedingungen für regulären Audrücken erfüllen:
1– deutsche und österreichische Postleitzahlen, z.B. D-89000 oder A-5020
2– englische Uhrzeit, z.B. 6:12 am oder 10:59 pm
3– eine Versionsnummer, z.B. 2.6.21-rc7 oder 2.4.34
4– eine 13-stellige ISBN-Nummer, z.B. 978-3-86680-192-9 oder 978-3-16-148410-0
5– Anfangs-Tag irgendeiner HTML-Überschrift, z.B. <h3> oder <H1>
6– eine österreichische Telefonnummer, z.B. +43/662/8044-6310
7– eine VISA-Kreditkartennummer (starten mit einer 4, neue Karten haben 16, alte Karten 13 Zahlen), z.B. 4123123123123
8– eine MasterCard-Kreditkartennummer (starten mit Zahlen 51 bis 55 und haben 16 Zahlen), z.B. 5112312312312312.
9– eine beliebige VISA oder MasterCard-Kreditkartennummer (Format siehe vorher)
10– eine .at email-Adresse, z.B. abcdf@abcdf.abcdf.ac.at
11– eine IPv4-Adresse, z.B. 141.201.0.1
12– ein Wort, in dem der Buchstabe e nicht vorkommt, z.B. Plan, Ausdruck
Einige davon habe ich selbst bearbeitet und funktionieren schon richtig, aber mit Nummern 5,6,9,10 und 12 habe ich Probleme.
Danke im voraus.
Könnte mir jemand bitte bei der folgenden Aufgabe weiterhelfen?
Man sollte folgende Bedingungen für regulären Audrücken erfüllen:
1– deutsche und österreichische Postleitzahlen, z.B. D-89000 oder A-5020
2– englische Uhrzeit, z.B. 6:12 am oder 10:59 pm
3– eine Versionsnummer, z.B. 2.6.21-rc7 oder 2.4.34
4– eine 13-stellige ISBN-Nummer, z.B. 978-3-86680-192-9 oder 978-3-16-148410-0
5– Anfangs-Tag irgendeiner HTML-Überschrift, z.B. <h3> oder <H1>
6– eine österreichische Telefonnummer, z.B. +43/662/8044-6310
7– eine VISA-Kreditkartennummer (starten mit einer 4, neue Karten haben 16, alte Karten 13 Zahlen), z.B. 4123123123123
8– eine MasterCard-Kreditkartennummer (starten mit Zahlen 51 bis 55 und haben 16 Zahlen), z.B. 5112312312312312.
9– eine beliebige VISA oder MasterCard-Kreditkartennummer (Format siehe vorher)
10– eine .at email-Adresse, z.B. abcdf@abcdf.abcdf.ac.at
11– eine IPv4-Adresse, z.B. 141.201.0.1
12– ein Wort, in dem der Buchstabe e nicht vorkommt, z.B. Plan, Ausdruck
Einige davon habe ich selbst bearbeitet und funktionieren schon richtig, aber mit Nummern 5,6,9,10 und 12 habe ich Probleme.
Danke im voraus.
PHP-Code:
<?php
/*
^ Anfang eines Strings
$ Ende eines Strings
. ein beliebiges Zeichen
n? optional vorhandenes 'n'
n* Kein oder mehrfaches Vorkommen von 'n'
n+ Ein oder mehrere Vorkommen von 'n'
n{2} Genau zweifaches Vorkommen von 'n'
n{2,} Mindestens 2 oder mehrere Vorkommen von 'n'
n{2,4} Mindestens 2, höchstens 4 Vorkommen von 'n'
() Klammern für Ausdrücke
(n|a) Entweder 'n' oder 'a'
[1-6] eine Zahl zwischen 1 und 6
[c-h] ein Kleinbuchstabe zwischen c und h (c,d,e,f,g,h)
[D-H] ein Großbuchstabe zwischen D und H (D,E,F,G,H)
[^a-z] kein Vorkommen von Kleinbuchstaben zwischen a und z
[_a-zA-Z] ein Unterstrich und ein beliebiger Buchstabe des Alphabets
[:space:] Leerzeichen
\ Escape-Zeichen, u.a. für ? ' " -
*/
//Gibt an (alle Fehler und Warnungen), welche PHP-Fehlermeldungen angezeigt werden.
error_reporting(E_ALL);
//Prüfung der Daten
if(isset($_POST['submit']) AND $_POST['submit']=='OK'){
//Prüfe, ob der plz nur gültige Zeichen enthält.
if(!preg_match('/^A|D-[0-9]{4,5}$/', trim($_POST['plz'])))
echo "PLZ ist falsch eingegeben!<br>";
//Prüfe, ob die englische Uhrzeit nur gültige Zeichen enthält.
if(!preg_match('/^(0[1-9]|1[0-2]):([0-5][0-9])(am|pm)$/', trim($_POST['uhrzeit'])))
echo "Uhrzeit ist falsch eingegeben!<br>";
//Prüfe, ob die Version nur gültige Zeichen enthält.
if(!preg_match('^([0-9]{1})([0-9]{1})([0-9]{2})?-([a-z]{2})([0-9]{1})$^', trim($_POST['version'])))
echo "Version ist falsch eingegeben!<br>";
//Prüfe, ob die ISBN nur gültige Zeichen enthält.
if(!preg_match('^([0-9]{3})-([0-9]{1})-([0-9]{2,5})-([0-9]{3,6})-([0-9]{1})$^', trim($_POST['isbn'])))
echo "ISBN ist falsch eingegeben!<br>";
//Prüfe, ob die HTML-Tag nur gültige Zeichen enthält.
if(!preg_match('/^<(h|H).{1,6}>$/', trim($_POST['html'])))
echo "HTML-Tag ist falsch eingegeben!<br>";
//Prüfe, ob die Telefonnummer nur gültige Zeichen enthält.
if(!preg_match('/^[0-9\/+-]+$/', trim($_POST['tel'])))
echo "Telefonnummer ist falsch eingegeben!<br>";
//Prüfe, ob die VISA-Card nur gültige Zeichen enthält.
if(!preg_match('/^([4]{1})([0-9]{13,16})$/', trim($_POST['visa'])))
echo "VISACard-Nummer ist falsch eingegeben!<br>";
//Prüfe, ob die Master-Card nur gültige Zeichen enthält.
if(!preg_match('/^5[1-5].{14}$/', trim($_POST['master'])))
echo "Master-Card Nummer ist falsch eingegeben!<br>";
// Prüfe, ob die Email-Adresse gültig ist
if(!preg_match('^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}$^', trim($_POST['email'])))
$errors[]= "E-mail Adresse ist falsch eingegeben!<br>";
//Prüfe, ob die beliebige Master- Visa Card nur gültige Zeichen enthält.
if(!preg_match('/^[4]|[51]|[52]|[53]|[54]|[55].{13,16}$/', trim($_POST['visa-master'])))
echo "Visa-Master Nummer ist falsch eingegeben!<br>";
//Prüfe, ob die IPV4-Nummer nur gültige Zeichen enthält.
if(!preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', trim($_POST['ipv4'])))
echo "IPV4-Nummer ist falsch eingegeben!<br>";
//Prüfe, ob das Buchstabe "e" vorkommt.
if(!preg_match('/[^e]$/', trim($_POST['e'])))
echo "e!<br>";
}
else {
echo "Kein Fehler";
echo "<br/>";
echo "<table width=\"554\" border=\"0\" align=\"center\" bgcolor=\"#99CCFF\">\n";
echo "<tr>\n";
echo " <td>\n";
echo " <h3>Regular Expressions</h3>\n";
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\" name=\"re\" accept-charset=\"ISO-8859-1\">\n";
echo "Deutsche und Österreichische PLZ: <br/>\n";
echo "<input name=\"plz\" type=\"text\" size=\"15\" maxlength=\"7\" value=\"D-12345\"> <br/><br/>\n";
echo "englische Uhrzeit: <br/>\n";
echo "<input name=\"uhrzeit\" type=\"text\" size=\"15\" maxlength=\"8\" value=\"10:22pm\"> <br/><br/>\n";
echo "Version: <br/>\n";
echo "<input name=\"version\" type=\"text\" size=\"15\" maxlength=\"30\" value=\"2.6.21-rc7\"> <br/><br/>\n";
echo "ISBN Nummer: <br/>\n";
echo "<input name=\"isbn\" type=\"text\" size=\"17\" maxlength=\"17\" value=\"978-3-86680-192-9\"> <br/><br/>\n";
echo "HTML Überschrift: <br/>\n";
echo "<input name=\"html\" type=\"text\" size=\"15\" maxlength=\"6\" value=\"<H3>\"> <br/><br/>\n";
echo "österreichische Telefonnummer: <br/>\n";
echo "<input name=\"tel\" type=\"text\" size=\"17\" maxlength=\"17\" value=\"+43/662/8044-6310\"> <br/><br/>\n";
echo "VISA-Kreditkartennummer: <br/>\n";
echo "<input name=\"visa\" type=\"text\" size=\"16\" maxlength=\"16\" value=\"41231231231235\"> <br/><br/>\n";
echo "Master-Kreditkartennummer: <br/>\n";
echo "<input name=\"master\" type=\"text\" size=\"16\" maxlength=\"16\" value=\"5112312312312312\"> <br/><br/>\n";
echo ".at E-Mail Adresse: <br/>\n";
echo "<input name=\"email\" type=\"text\" size=\"30\" maxlength=\"30\" value=\"abcdf@abcdf.abcdf.ac.at\"> <br/><br/>\n";
echo "Visa-Master-Kreditkartennummer: <br/>\n";
echo "<input name=\"visa-master\" type=\"text\" size=\"16\" maxlength=\"16\" value=\"5112312312312312\"> <br/><br/>\n";
echo "IPv4-Adresse: <br/>\n";
echo "<input name=\"ipv4\" type=\"text\" size=\"15\" maxlength=\"15\" value=\"141.201.0.1\"> <br/><br/>\n";
echo "\"e\" kommt nicht vor: <br/>\n";
echo "<input name=\"e\" type=\"text\" size=\"15\" maxlength=\"30\" value=\"Plan\"> <br/><br/>\n";
echo "<input type=\"submit\" name=\"submit\" value=\"OK\" align=\"right\">\n";
echo "</form>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
}
?>
Kommentar