7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. ActionScript

Validierung verschiedener Eingabedaten in Flash

Scroll to top
Read Time: 35 mins

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

Heutzutage basiert fast alles im Web auf Benutzereingaben. Ein Kontaktformular, ein Benutzerregistrierungsformular, ein Suchfeld und so weiter. Als Entwickler können Sie sich nicht darauf verlassen, dass der Benutzer alles so schreibt, wie es sein soll. Um sicherzustellen, dass Sie immer die richtigen Daten von Ihren Benutzern erhalten, müssen Sie die Eingabe validieren. Lesen Sie weiter, um herauszufinden, wie..

In diesem Tutorial erfahren Sie, wie verschiedene Daten strukturiert sein sollen und wie Sie diese Daten validieren. Beachten Sie, dass diese Methoden möglicherweise nicht die besten oder vollständigsten Lösungen sind.

Die folgenden Themen werden in diesem Tutorial behandelt:

  • Validierung von Datum und Uhrzeit
  • E-Mail-Validierung
  • Validierung der Webadresse
  • Validierung der Telefonnummer
  • Validierung der International Standard Book Number (ISBN)
  • Validierung der internationalen Bankkontonummer (IBAN)
  • Validierung der Kreditkartennummer

Jedes Thema wird unabhängig behandelt, sodass Sie den Themen folgen können, die Sie interessieren.


Endergebnisvorschau

So sieht unser Validator aus:

Es gibt mehrere Felder mit dem einzigen Zweck der Demonstration. In einem realen Szenario werden Sie selten alle diese Felder in einem einzigen Formular haben.

In diesem Tutorial werde ich nur den Codierungsteil behandeln. Die grafische Oberfläche finden Sie in den Quelldateien. Um mitzumachen, benötigen Sie Flash CS3+.

Um dieses Tutorial besser zu verstehen, müssen Sie über einige Grundkenntnisse über reguläre Ausdrücke und Zeichenfolgenfunktionen verfügen. Bitte lesen Sie diese Ressource zu regulären Ausdrücken in ActionScript 3.0, wenn Sie mit der Syntax nicht vertraut sind.

Die .fla-Datei verstehen

Nun, es ist keine sehr komplizierte Schnittstelle. Wenn Sie die Datei Validator.fla im Ordner begin des Quell-Downloads öffnen, finden Sie zwei Frames: einen gesperrten mit dem Namen ActionScript und einen mit dem Namen Interface.

Der Interface-Layer ist derzeit leer. Dort fügen wir unsere für die Dateneingabe verwendeten Textfelder hinzu.

Auf der ActionScript-Ebene finden Sie diesen Code:

Die erste Zeile stellt eine Instanz unserer zukünftigen Validator-Klasse dar. Wir verwenden eine separate AS-Datei, um diese Klasse zu enthalten, damit sie in anderen Projekten verwendet werden kann.

Wir fügen der Bühne für Fokusereignisse Ereignis-Listener hinzu. Wir verwenden diese Ereignisse, um unsere Eingabedaten nur dann zu validieren, wenn ein Textfeld den Fokus hat, nur um unnötige Berechnungen zu vermeiden.

Die onFrameUpdate-Funktion wird in jedem Frame aufgerufen, wenn ein Textfeld den Fokus hat, um die darin enthaltenen Daten zu validieren.

Wir fügen unseren zukünftigen Code in die switch-Anweisung ein. Alles andere bleibt in diesem Tutorial unverändert. In der Bibliothek finden Sie einen MovieClip namens TextBox. Dies hat ein Eingabe-TextField mit dem Instanznamen input_txt und einen weiteren MovieClip namens validTick mit zwei Frames mit den Bezeichnungen "valid" und "invalid".

Kommen wir nun zur Codierung.


Schritt 1: Vorbereitungen

Erstellen Sie zuerst eine neue ActionScript-Datei und nennen Sie sie Validator.as

Fügen Sie den folgenden Code ein oder geben Sie ihn ein:

Dies wird der Rahmen unserer Validator-Klasse sein. Wir werden dieser Klasse für jeden von uns durchgeführten Validierungstyp Methoden hinzufügen. Legen Sie diese Datei in denselben Ordner wie die Datei Validator.fla.


Schritt 2: Kalenderdatumsstruktur

Das Kalenderdatum ist eine der am häufigsten verwendeten Daten im Web. Die Struktur variiert von Zone zu Zone. Wir werden uns zwei Hauptdatenformate ansehen: die Version für Großbritannien und die Version für die Vereinigten Staaten.

  • Das britische Datum wird als TT-MM-JJJJ ausgedrückt.
  • Das US-Datum wird als TT-MM-JJJJ ausgedrückt.

In beiden Fällen steht DD für den Tag, MM für den Monat und YYYY für das Jahr. Es ist auch möglich, ein anderes Zeichen als Trennzeichen zu verwenden, z. B. einen Schrägstrich.

Wenn Sie weitere Unterlagen benötigen, können Sie hier mehr über Kalenderdaten erfahren.


Schritt 3: Überprüfung des Kalenderdatums

Code

Zuerst müssen wir überprüfen, ob das Datumsformat korrekt ist. Fügen Sie den folgenden Code direkt nach dem Konstruktor in unsere Validator-Klasse ein oder geben Sie ihn ein:

Erläuterung

Die erste Zeile der Funktion stellt das Muster dar, mit dem der Monat überprüft wird:

Dieses Muster entspricht einer Zahl von 1 bis 12. Bei Zahlen unter 10 wird auf Ziffern mit oder ohne führende Null geprüft.

Die zweite Zeile stellt das Tagesmuster dar:

Dies entspricht einer Zahl von 1 bis 31. Wie bereits erwähnt, wird bei Zahlen unter 10 nach Ziffern mit oder ohne führende Null gesucht.

Die nächste Zeile stellt das Jahresmuster dar:

Dies wird nach Zahlen zwischen 1000 und 9999 suchen. Natürlich könnten wir ein Muster verwenden, um Jahre von 0 bis über 9999 zu prüfen, aber der Einfachheit halber werden wir nach Zahlen innerhalb dieser neun Jahrtausende suchen.

Das variable Trennzeichen prüft einfach, ob eines dieser vier Trennzeichen verwendet wird: Bindestrich "-", Punkt ".", Schrägstrich "/" und Leerzeichen " ".

Die beiden Variablen usDate und ukDate stellen die regulären Ausdrücke dar, die verwendet werden, um ein Datum zu überprüfen. Sie sind im Grunde gleich, der einzige Unterschied besteht in der Reihenfolge des Monats und des Tages.

Dadurch wird überprüft, ob am Anfang der Zeichenfolge ein gültiger Monat steht. Nachdem es überprüft hat, ob ein gültiges Trennzeichen verwendet wird, prüft es auf einen gültigen Tag. Als nächstes verwendet es einen Rückverweis auf die zweite im Ausdruck verwendete Gruppe (das Trennzeichen), um zu überprüfen, ob das zweite Trennzeichen verwendet wurde. Und schließlich prüft es am Ende der Zeichenfolge, ob ein gültiges Jahr vorhanden ist.

Der ukDate-Ausdruck hat die gleiche Wirkung. Der einzige Unterschied besteht darin, dass nach dem Tag am Anfang der Zeichenfolge gesucht wird.

In der letzten Zeile testen wir den String mit dem ternären Operator, um zu sehen, ob es sich um ein gültiges Datum in einem der beiden Formate handelt und gibt je nach Fall true oder false zurück. In einem realen Fall würden Sie diese beiden Werte nicht überprüfen, da dies zu Verwirrung führen kann, wenn der DD kleiner als 13 ist (z. B. 01.06.2010).


Schritt 4: Implementierung des Kalenderdatums

Öffnen Sie die Datei Validator.fla, die in den Quelldateien enthalten ist. Wählen Sie die Interface-Ebene aus und platzieren Sie eine Instanz des TextBox-Movieclips auf der Bühne. Ziehen Sie es dazu einfach aus der Bibliothek an eine beliebige Stelle auf der Bühne. Geben Sie ihm den Instanznamen dateField.

img1

Hinweis: Wenn Sie das Bibliotheksfenster nicht sehen können, können Sie es öffnen, indem Sie zu Fenster > Bibliothek gehen oder STRG+L drücken.

Erstellen Sie mit dem Textwerkzeug (Hotkey T) ein statisches Textfeld direkt über der zuvor erstellten Instanz von TextBox und schreiben Sie "Datum:" hinein.

img2img2img2

Wählen Sie die ActionScript-Ebene aus und öffnen Sie das Aktionenbedienfeld, indem Sie F9 drücken oder zu Fenster > Aktionen gehen. Geben Sie den folgenden Code in die switch-Anweisung der onFrameUpdate-Funktion in Zeile 22 ein:

Dadurch wird die Eingabe mit der validator-Instanz als Datum validiert.

Testen Sie den Film, indem Sie STRG+EINGABETASTE auf der Tastatur drücken oder zu Steuerung > Film testen gehen. Geben Sie in das Textfeld ein Datum in einem beliebigen Format (UK oder US) ein und verwenden Sie dasselbe Trennzeichen zwischen Monat, Tag und Jahr. Wenn Sie einen korrekten Wert eingegeben haben, sollte das grüne Häkchen erscheinen.


Schritt 5: Struktur der E-Mail-Adresse

Eine E-Mail-Adresse stellt einen Verweis auf das elektronische Postfach dar, an das E-Mail-Nachrichten gesendet werden. Die RFC-Spezifikation besagt, dass eine E-Mail-Adresse wie folgt zusammengesetzt sein kann:

  • Englische Groß- und Kleinbuchstaben (a-z, A-Z)
  • Ziffern 0 bis 9
  • Zeichen ! # $ % & ' * + - / = ? ^ _ ` { | } ~ .

Höchstwahrscheinlich werden Sie keinen E-Mail-Anbieter finden, der all diese Zeichen in der E-Mail-Adresse zulässt. Um eine solche E-Mail-Adresse zu validieren, ist ein langer und sehr komplizierter regulärer Ausdruck erforderlich. Da viele Unternehmen (z. B. Yahoo!, MSN, Gmail) nur E-Mail-Adressen zulassen, die alphanumerische Zeichen und Bindestriche "-", Punkt "." enthalten. und unterstreichen "_", machen wir einen Checker, mit dem wir mit diesen Adressen arbeiten.

[Hrsg. Tatsächlich erlauben Gmail-Adressen ein +-Zeichen; wir überlassen es Ihnen als Herausforderung, das umzusetzen ;)]

Eine E-Mail-Adresse wird normalerweise aus dem "Benutzernamen" (oder "Adresse") einem "@"-Zeichen und der Domain (Name und Erweiterung) gebildet.

Wenn Sie mehr über E-Mail-Adressen erfahren möchten, können Sie die Wiki-Seite für E-Mail-Adressen lesen.


Schritt 6: Prüfung der E-Mail-Adresse

Code

Fügen Sie den folgenden Code direkt nach der checkDate-Methode in unsere Validator-Klasse ein oder geben Sie ihn ein:

Erläuterung

Die erste Zeile definiert das Muster, das verwendet wird, um die tatsächliche 'Adresse' oder den Benutzernamen zu überprüfen. Dadurch wird überprüft, ob es nur die zulässigen Zeichen enthält:

Die zweite definierte Variable repräsentiert das Domänennamenmuster. Ein gültiger Domainname und Subdomainname enthält nur alphanumerische Zeichen, den Punkt '.' und Bindestrich '-':

Als nächstes gibt es das Domain-Erweiterungsmuster, das verwendet wird, um zu überprüfen, ob die Domain-Erweiterung gültig ist. Eine Top Level Domain (TLD) darf nur Zeichen von A bis Z enthalten, die Groß-/Kleinschreibung wird bei 2 oder mehr Zeichen nicht beachtet (in unserem Fall 6):

Um die Prüfung noch strenger zu gestalten, können Sie prüfen, ob die TLD bereits existiert:

Dies sind nur einige generische TLDs. Sie können sehen, wie dies ziemlich lang wird, wenn Sie immer mehr TLDs hinzufügen.

Die email-Variable stellt den regulären Ausdruck dar, der verwendet wird, um zu testen, ob die E-Mail-Adresse gültig ist. Dies prüft, ob am Anfang der E-Mail-Adresse ein gültiger Benutzername/eine gültige Adresse vorhanden ist, wenn irgendwo in der Mitte das Zeichen "a" vorhanden ist, und prüft anschließend auf einen gültigen Domainnamen und eine gültige Endung, beide getrennt durch den Punkt "." Charakter:

Beachten Sie, dass wir keine Großbuchstaben verwendet haben. Dies liegt daran, dass wir den Modifikator "i" verwendet haben, bei dem die Groß-/Kleinschreibung nicht beachtet wird, da bei E-Mail-Adressen im Allgemeinen die Groß-/Kleinschreibung nicht beachtet wird.


Schritt 7: Implementierung der E-Mail-Adresse

Hinweis: Ausführlichere Anweisungen finden Sie in Schritt 4.

Öffnen Sie Validator.fla, erstellen Sie eine neue Instanz des TextBox-Movieclips und geben Sie ihm den Instanznamen emailField.

Erstellen Sie ein statisches Textfeld über der TextBox und schreiben Sie darin "E-Mail:"

Geben Sie in Zeile 25 folgenden Code ein:

Dadurch werden die Eingabedaten in der emailField-TextBox als E-Mail-Adresse mit der validator-Instanz der Validator-Klasse überprüft.

Testen Sie den Film und geben Sie eine E-Mail-Adresse in das mit "E-Mail" beschriftete Textfeld ein.


Schritt 8: Struktur der Webadresse

Jedes Mal, wenn Sie im Internet surfen, geben Sie höchstwahrscheinlich eine Webadresse (URL) in Ihren Webbrowser ein, um zu Ihrem gewünschten Standort zu navigieren. Sie können es auch in einem Kommentarformular verwenden, in dem Sie aufgefordert werden, Ihre Website (Adresse) einzugeben, oder wenn Sie Websites manuell an eine Suchmaschine übermitteln.

Eine Webadresse besteht aus:

  • Protokoll oder Schema: http, https oder ftp + "://"
  • Domänenname: der ein beliebiges alphanumerisches Zeichen enthalten kann, Punkt "." und der Bindestrich "-"
  • Domain-Endung: bestehend aus alphanumerischen Zeichen

Eine ausführlichere Dokumentation zu Webadressen (URLs) finden Sie auf dieser Seite.


Schritt 9: Überprüfung der Webadresse

Code

Fügen Sie den folgenden Code direkt nach der Methode checkEmailAddress in unsere Validator-Klasse ein oder geben Sie ihn ein:

Erläuterung

Die erste Zeile definiert das Muster, mit dem das Protokoll überprüft wird. Normalerweise kann dies optional sein (je nach Fall):

Die zweite definierte Variable repräsentiert das Domänennamenmuster. Ein gültiger Domainname und Subdomainname enthält nur alphanumerische Zeichen, den Punkt "." und Bindestrich "-":

Als nächstes gibt es das Domain-Erweiterungsmuster, das verwendet wird, um zu überprüfen, ob die Domain-Erweiterung gültig ist. Eine Top Level Domain (TLD) darf nur Zeichen von A bis Z enthalten, die Groß-/Kleinschreibung wird bei 2 oder mehr Zeichen nicht beachtet (in unserem Fall 6):

Um die Prüfung noch strenger zu gestalten, können Sie prüfen, ob die TLD bereits existiert:

Dies sind nur einige generische TLDs. Sie können sehen, wie dies ziemlich lang wird, wenn Sie immer mehr TLDs hinzufügen.

Die Webvariable stellt den regulären Ausdruck dar, der verwendet wird, um zu testen, ob die Webadresse gültig ist. Dabei wird geprüft, ob sich die angegebene Adresse aus Protokoll (optional) und Domain zusammensetzt (die Domain muss aus einem Domainnamen und einer durch den Punkt "." getrennten Domainendung bestehen:

Wie bei der E-Mail-Adresse wird bei Webadressen die Groß-/Kleinschreibung nicht beachtet, daher verwenden wir den Modifikator "i" (case insensitive).


Schritt 10: Implementierung der Webadresse

Hinweis: Ausführlichere Anweisungen finden Sie in Schritt 4.

Öffnen Sie Validator.fla, erstellen Sie eine neue Instanz des TextBox-Movieclips und geben Sie ihm den Instanznamen webAddressField.

Erstellen Sie ein statisches Textfeld über der TextBox und schreiben Sie darin "Webadresse:".

Geben Sie in Zeile 28 folgenden Code ein:

Dadurch werden die Eingabedaten in der webAddressField-TextBox als Webadresse mit der validator-Instanz der Validator-Klasse überprüft.

Testen Sie den Film und geben Sie eine Webadresse in das mit "Webadresse" beschriftete Textfeld ein.


Schritt 11: Telefonnummernstruktur

Der häufigste Ort, um eine Telefonnummer im Web zu verwenden, ist ein Kontaktformular oder SMS-Anwendungen. Eine Telefonnummer besteht aus den folgenden zwei Elementen:

  • Ländercode: eine Zahl zwischen 1 und 999 mit einem vorangestellten Pluszeichen „+“ oder doppelten Nullen „00“ (optional).
  • Lokale Telefonnummer: besteht nur aus Ziffern. Die Anzahl der Ziffern hängt vom Betreiber, dem Land und dem Telefonnummerntyp ab.

Hier finden Sie eine vollständige Liste der Landesvorwahlen, wenn Sie Ihre Rufnummerneingabe auf mehrere Länder beschränken möchten. Sie können auch den Nummerierungsplan überprüfen, um zu sehen, wie Telefonnummern in verschiedenen Netzen und Ländern verwendet werden.


Schritt 12: Telefonnummer überprüfen

Code

Fügen Sie den folgenden Code direkt nach der Methode checkWebAddress in unsere Validator-Klasse ein oder geben Sie ihn ein:

Erläuterung

Die erste Zeile definiert das Muster, mit dem der Ländercode überprüft wird. Wie gesagt, dies ist eine Zahl zwischen 1 und 999 mit vorangestelltem "+" oder "00" (optional):

Die zweite Variable repräsentiert die tatsächliche Zahl. Wir werden es schaffen, nach einer Zahl mit 3 bis 10 Ziffern zu suchen:

In der dritten Zeile entfernen wir unsere Telefonnummer von zusätzlichen Leerzeichen oder Trennzeichen und behalten nur das "+"-Zeichen und die Ziffern bei:

Der reguläre Ausdruck des Telefons ist der Ausdruck, der verwendet wird, um zu überprüfen, ob die Telefonnummer aus einer Landesvorwahl und einer lokalen Nummer besteht:

Die letzte Zeile gibt das Ergebnis des Testens des Musters über die angegebene Telefonnummer zurück. Einfach genug, oder?


Schritt 13: Implementierung der Telefonnummer

Hinweis: Ausführlichere Anweisungen finden Sie in Schritt 4.

Öffnen Sie Validator.fla, erstellen Sie eine neue Instanz des TextBox-Movieclips und geben Sie ihr den Instanznamen phoneNumberField.

Erstellen Sie ein statisches Textfeld über der TextBox und schreiben Sie darin "Telefonnummer:".

Geben Sie in Zeile 31 den folgenden Code ein:

Dadurch werden die Eingabedaten in der phoneNumberField-TextBox als Telefonnummer mit der validator-Instanz der Validator-Klasse überprüft.

Testen Sie den Film und geben Sie eine Telefonnummer in das mit "Telefonnummer" beschriftete Textfeld ein.

Nun, das sollten Sie bis jetzt haben:

Und das ist der Code:

Vergleichen Sie Ihre Ergebnisse mit meinen und stellen Sie sicher, dass alles dort ist, wo es sein soll. Jetzt... gehen wir weiter!


Schritt 14: ISBN-10-Struktur

Die International Serial Book Number, oder kurz ISBN, ist eine internationale Identifikationsnummer, die einem Buch zugewiesen wird. ISBN-Nummern sind einzigartig und werden nur einmal an ein Buch vergeben. Bisher konnten wir nicht überprüfen, ob die Daten tatsächlich gültig sind, aber ISBN-Nummern haben eine Kontrollziffer, die mit einem Prüfsummenalgorithmus überprüft werden muss.

Der Prüfsummen-Algorithmus:

  • Wir entfernen die Anzahl der Schrägstriche oder Leerzeichen und speichern die letzte Ziffer separat (dies ist die Kontrollziffer).
  • Wir multiplizieren jede Ziffer der 9-stelligen Zahl mit seinem Gewicht. Die Gewichtungen reichen von 10 bis 2, beginnend mit der ersten Ziffer der Zahl.
  • Wir summieren die resultierenden Zahlen und extrahieren den Rest für die Division der Zahl mit 11.
  • Wenn der Rest 0 ist, muss das Steuerzeichen 0 sein. Wenn der Rest nicht 0 ist, ziehen wir ihn von 11 ab und wenn das Ergebnis 10 ist, muss das Steuerzeichen "x" sein, sonst muss das Steuerzeichen mit dem Ergebnis übereinstimmen.

Wenn Sie detailliertere Angaben zu ISBN-Nummern benötigen, finden Sie hier alles dazu. Die Wiki-Seite enthält Details zu ISBN-10- und ISBN-13-Nummern.


Schritt 15: ISBN-10-Prüfung

Code

Fügen Sie den folgenden Code direkt nach der checkPhoneNumber-Methode in unsere Validator-Klasse ein oder geben Sie ihn ein:

Erläuterung

Die ersten Zeilen unserer Methode entfernen alle Leerzeichen und Bindestriche. Dann wird überprüft, ob die Länge korrekt ist. Eine ISBN-10-Nummer muss 9 Ziffern + ein Steuerzeichen haben:

Im else speichert die Variable valid die Gültigkeit der Zahl und Gewichte ist ein Array mit den Gewichten der Ziffern:

Im digits-Array speichern wir die Ziffern der Zahl und extrahieren das letzte Zeichen, das das Steuerzeichen ist, und speichern es in der Steuervariablen. Die Ergebnisvariable speichert das Ergebnis der Prüfsumme:

Da wir nun jede Ziffer der Zahl haben, müssen wir sie mit ihrem Gewicht multiplizieren. Wir können dies mit einer for-Schleife tun, in der wir jedes Element (Ziffer) im digits-Array mit seinem entsprechenden Gewicht multiplizieren und die Summe dieser Multiplikationen speichern:

In der nächsten Codezeile überprüfen wir den Rest der Summe in Bezug auf 11:

Dies hätte mit einer if-Anweisung erfolgen können, aber ich habe den ternären Operator verwendet, der eine Kurzform ist. Der ternäre Operator funktioniert so variable = condition ? value1 : value2;. Wenn die Bedingung wahr ist, wird value1 an die Variable übergeben, andernfalls erhält sie value2.

Als nächstes überprüfen wir das Ergebnis mit einer switch-Anweisung und geben den Wert an die gültige Variable. Wenn es 10 ist, muss das Steuerzeichen "x" sein, sonst muss das Ergebnis mit der entsprechenden Ziffer übereinstimmen:

Und zum Schluss geben wir das Ergebnis des Tests zurück.


Schritt 16: ISBN-10-Implementierung

Hinweis: Ausführlichere Anweisungen finden Sie in Schritt 4.

Öffnen Sie Validator.fla, erstellen Sie eine neue Instanz des TextBox-Movieclips und geben Sie ihm den Instanznamen ISBNField.

Erstellen Sie ein statisches Textfeld über der TextBox und schreiben Sie darin "ISBN-Nummer:".

Geben Sie in Zeile 34 den folgenden Code ein:

Dadurch werden die Eingabedaten in der ISBNField TextBox als ISBN-10 mit der validator-Instanz der Validator-Klasse überprüft.

Testen Sie den Film und geben Sie eine ISBN-10-Nummer in das mit "ISBN-Nummer" beschriftete Textfeld ein.

Beachten Sie, dass die Validierung einer ISBN-10-Nummer nicht unbedingt bedeutet, dass diese existiert oder zu einem Buch gehört.


Schritt 17: ISBN-13-Struktur

"Was? Eine andere ISBN-Nummer?" man könnte sagen. Nun, eigentlich ist das bisherige Zahlenformat ein alter Standard. Dieser neue ISBN-13-Standard wurde 2005 eingeführt und bis zum 01.01.2007 wurden beide Formate für Bücher verwendet. Das ISBN-13-Format hat 12 Ziffern und eine dreizehnte Ziffer ist die Kontrollziffer.

Der Prüfsummen-Algorithmus:

  • Wir entfernen die Anzahl der Leerzeichen und Bindestriche.
  • Wir multiplizieren jede Ziffer mit ihrem entsprechenden Gewicht. Die Gewichte sind 1 und 3 und werden wie folgt verteilt:
    tabel1tabel1tabel1
  • Wir summieren die resultierenden Zahlen und extrahieren den Rest für die Division der Zahl mit 10.
  • Wenn der Rest 0 ist, muss das Steuerzeichen 0 sein. Wenn der Rest nicht 0 ist, ziehen wir ihn von 10 ab und das Ergebnis muss mit dem Steuerzeichen übereinstimmen.

Schritt 18: ISBN-13-Prüfung

Code

Fügen Sie den folgenden Code in unsere Validator-Klasse direkt nach der Methode validISBN10 ein oder geben Sie ihn ein:

Erläuterung

Das Ziffern-Array enthält die Ziffern der Zahl. Wir tun dies, indem wir die Ziffern aus unserer Zahl mit der Match-Methode der String-Klasse extrahieren. Danach speichern wir die Kontrollziffer in der Kontroll-Variablen, indem wir das letzte Element im Ziffern-Array extrahieren:

Die Gewichtungsvariable enthält das aktuelle Gewicht einer Ziffer und die Ergebnisvariable enthält das Ergebnis der Prüfsumme:

Wir verwenden eine in-else-Anweisung, um zu sehen, ob das digits-Array die richtige Anzahl von Ziffern enthält, mit Ausnahme der Kontrollziffer.

In der for-Schleife durchlaufen wir das digits-Array und multiplizieren jede Ziffer mit ihrem Gewicht (1 und 3 abwechselnd jede Ziffer) und speichern die Summe in der Ergebnisvariablen. Wenn die Position der Ziffer im Array eine gerade Zahl ist, ist das Gewicht 1, sonst ist das Gewicht 3. Wir tun dies, indem wir den Rest auf die Division von i durch 2 überprüfen:

Zuletzt dividieren wir die Summe durch 10. Wenn es 0 ist, ist das Ergebnis 0, sonst ziehen wir den Rest von 10 ab:

Wenn die Ergebnisziffer mit der Kontrollziffer übereinstimmt, ist die Zahl gültig.


Schritt 19: ISBN-13-Implementierung

Öffnen Sie Validator.fla und ändern Sie den Code in den Zeilen 34 bis 36 wie folgt:

Dadurch wird die Nummer sowohl als ISBN-10 als auch als ISBN-13 überprüft.

Testen Sie den Film und geben Sie eine ISBN-Nummer in das mit "ISBN-Nummer" beschriftete Textfeld ein. Für diese Art von Nummern gilt das gleiche wie für ISBN-10-Nummern. Wenn eine Zahl gültig ist, bedeutet dies nicht unbedingt, dass sie auch existiert.


Schritt 20: IBAN-Struktur

International Bank Account Number oder kurz IBAN ist ein internationaler Standard zur Nummerierung von Bankkonten. Dieser setzt sich wie folgt zusammen:

  • Zwei alphabetische Zeichen (Großbuchstaben), die das Land darstellen
  • Eine zweistellige Schecknummer von 00 bis 99
  • Vier alphabetische Zeichen (Großbuchstaben) für die Bank, die die Nummer ausgegeben hat
  • Eine Kontonummer unterschiedlicher Länge je nach Land und Bank

Der Validierungsalgorithmus:

  • Wir entfernen die Anzahl der Leerzeichen.
  • Die ersten vier Zeichen der Nummer (Landeszeichen und Kontrollziffern) werden nach hinten verschoben.
  • Wir konvertieren alle alphabetischen Zeichen wie folgt in Zahlen: A = 10, B = 11, C = 12, ..., Z = 35.
  • Wir berechnen den Rest der Division durch 97.

Die Zahl ist nur gültig, wenn der Rest 1 ist.

Auf dieser Seite finden Sie eine vollständige Dokumentation zu internationalen Bankkontonummern.


Schritt 21: IBAN-Prüfung

Code

Fügen Sie den folgenden Code in unsere Validator-Klasse ein oder geben Sie ihn direkt nach der Methode validISBN13 ein:

Erläuterung

Das nums-Objekt enthält für jedes Zeichen die entsprechende Zahl:

Das Array chars enthält die Zeichen der Zahl:

Mit der ersten for-Schleife verschieben wir die ersten vier Zeichen nach hinten, indem wir sie vom Anfang des Arrays entfernen und nach hinten platzieren:

Der reguläre Ausdruck exp ist ein einfaches Muster für alphabetische Zeichen, mit dem jedes Element im Array chars getestet wird:

In der zweiten for-Schleife überprüfen wir jedes Zeichen im chars-Array, um zu sehen, ob es ein Buchstabe ist, und ändern es mit dem nums-Objekt in die entsprechende Zahl:

Nachdem wir jeden Buchstaben in eine Zahl umgewandelt haben, wandeln wir das Array in einen String um und weisen es der iban-Variablen zu:

Schließlich geben wir zurück, ob der Rest der Division durch 97 der Zahl gleich 1 ist oder nicht.

Sie fragen sich vielleicht, warum ich anstelle des Operators "%" eine benutzerdefinierte Funktion verwendet habe. Nun, wenn Sie darüber nachdenken, hat die Zahl mehr als 20 Stellen (sehr groß) und der normale Modulus-Operator funktioniert nicht wie erwartet. Wir müssen also einen Weg definieren, um den Modul für große Zahlen zu berechnen.

Die Modulus-Funktion

Um den Modul großer Zahlen zu berechnen, habe ich eine Implementierung der Methode "Divide and Conquer" verwendet. Um es kurz zu machen, subtrahiert dieses Verfahren einen Teil der großen Zahl und bildet den Modulus dieses Teils, wonach es das Ergebnis an den verbleibenden Teil der großen Zahl anhängt. Eine detailliertere Darstellung dieser Methode finden Sie unter Dieser Link.

Fügen Sie den folgenden Code in unsere Validator-Klasse direkt nach der Methode validISBN ein oder geben Sie ihn ein:

Die Variable tmp speichert einen Teil der großen Zahl, indem sie 10 Zeichen davon abzieht:

Die Variable number repräsentiert die große Zahl, die um die Länge des tmp-Strings gekürzt wird:

Die Ergebnisvariable enthält offensichtlich das Ergebnis der Division. In der do-while-Schleife berechnen wir den Rest für die Division der tmp-Zahl durch die Ganzzahl mod (den Teiler) und weisen dem Ergebnis den Wert zu:

Wir fügen das Ergebnis am Anfang der großen Zahl hinzu und wiederholen die vorherigen drei Schritte, solange die Zahlenlänge größer als 0 ist:

Und zuletzt geben wir das Ergebnis des Moduls zurück.


Schritt 22: IBAN-Implementierung

Hinweis: Ausführlichere Anweisungen finden Sie in Schritt 4.

Öffnen Sie Validator.fla, erstellen Sie eine neue Instanz des TextBox-Movieclips und geben Sie ihm den Instanznamen IBANField.

Erstellen Sie ein statisches Textfeld über der TextBox und schreiben Sie darin "IBAN-Nummer:".

Geben Sie in Zeile 37 den folgenden Code ein:

Dadurch werden die Eingabedaten in der IBANField TextBox als IBAN mit der Validator-Instanz der Validator-Klasse überprüft.

Testen Sie den Film und geben Sie eine IBAN-Nummer in das mit "IBAN-Nummer" beschriftete Textfeld ein.


Schritt 23: Kartennummernstruktur

Auf der Vorderseite jeder Kredit- oder Debitkarte finden Sie eine Nummer unterschiedlicher Länge. Sie verwenden diese Nummer in der Regel für Online-Zahlungen mit Ihrer Kreditkarte. Wie gesagt, die Nummer variiert in Länge und Format je nach Unternehmen, zu dem sie gehört. Eines haben sie aber alle gemeinsam: Sie müssen einen Prüfsummenalgorithmus passieren. Kreditkartennummern werden mit dem Luhn-Algorithmus (mod 10) validiert.

Bevor wir in die eigentliche Validierung eintauchen, müssen wir überprüfen, ob die Nummer zu einem gültigen Unternehmen gehört. Wir prüfen diese drei Hauptkartenaussteller: American Express, Dinners Club, MasterCard und Visa. Die folgende Tabelle enthält die Nummerndetails für jedes Unternehmen:

tabel2tabel2tabel2

Der IIN-Bereich ist die Nummer, mit der die Kartennummer beginnt.

Der Luhn-Algorithmus

  • Wir verdoppeln jede zweite Ziffer in der Zahl beginnend mit der ersten Ziffer, wenn die Zahl eine gerade Anzahl von Ziffern hat, oder andernfalls beginnend mit der zweiten Ziffer.
  • Wir summieren die Ziffern des Produkts mit den ungedoppelten Ziffern.
  • Wir prüfen, ob die Gesamtsumme modulo 10 gleich 0 ist (oder die Zahl auf 0 endet), ob die Zahl gültig ist.

Weitere Informationen finden Sie auf den Wiki-Seiten der Bankkartennummer und des Luhn-Algorithmus


Schritt 24: Überprüfung der Kartennummer

Code

Fügen Sie den folgenden Code in unsere Validator-Klasse direkt nach der validateIBAN-Methode ein, oder geben Sie ihn ein:

Erläuterung

Der reguläre Ausdruck americanExpress definiert das Muster, mit dem die Kartennummern von American Express überprüft werden. Dies sucht nach Zahlen, die mit 34 oder 37 beginnen und 13 weitere Ziffern haben:

Der reguläre Ausdruck von dinnersClub definiert das Muster, das verwendet wird, um die Kartennummern von Dinners Club zu überprüfen. Dieses Muster prüft, ob eine Kreditkartennummer mit einer Zahl zwischen 300 und 305 beginnt und 13 weitere Ziffern hat:

Der reguläre Ausdruck masterCard definiert das Muster für MasterCard-Kartennummern. Dieses Muster prüft, ob die Kreditkartennummer mit einer Zahl zwischen 51 und 55 beginnt und mit 14 weiteren Ziffern endet:

Der reguläre Ausdruck visa definiert das Muster für Visa/Visa Electron-Kartennummern. Dies prüft, ob die angegebene Kartennummer mit 4 beginnt und mit 12 oder 15 Modus-Ziffern endet:

Wir verwenden den erweiterten Modifikator ("x") in jedem Ausdruck, damit Leerzeichen ignoriert werden. Dies wird nur verwendet, um den Ausdruck leichter lesbar zu machen.

Die boolesche Variable valid enthält den Gültigkeitsstatus der Kartennummer.

In der sechsten Zeile extrahieren wir die Ziffern aus unserer Nummer (die Nummer wird aus Gründen der Lesbarkeit normalerweise mit Bindestrichen oder Leerzeichen geschrieben):

In der if-Anweisung prüfen wir, ob die Zahl mit einem der vier zuvor definierten Muster übereinstimmt:

In der letzten Zeile geben wir true zurück, wenn die Zahl gültig ist und die Luhn-Prüfsumme übergibt.

Der Luhn-Algorithmus

Geben Sie den folgenden Code nach der Methode validCardNumber in unsere Validator-Klasse ein oder fügen Sie ihn ein:

Die Variable digits enthält die Ziffern der Zahl. Die Startvariable wird verwendet, um zu definieren, ab welcher Ziffer mit der Verdoppelung begonnen werden soll (dies wird durch den Index im Ziffern-Array dargestellt). Die Summenvariable enthält die Gesamtsumme. Wir verwenden die while-Schleife, um jede zweite Ziffer im Array zu verdoppeln. Wir fügen auch 2 zur Startvariablen hinzu, um bei jeder zweiten Stelle im Array zu überspringen:

In der nächsten Zeile wandeln wir das digits-Array in einen String um und teilen es wieder in ein Array auf. Wir tun dies, weil wir, wenn die verdoppelten Zahlen größer als 9 sind, die Ziffern summieren müssen (z. B. für 12 machen wir 1+2):

In der for-Schleife summieren wir einfach alle Ziffern:

Und zuletzt prüfen wir, ob der Rest 0 ist und geben ansonsten true oder false zurück:


Schritt 25: Implementierung der Kartennummer

Hinweis: Ausführlichere Anweisungen finden Sie in Schritt 4.

Öffnen Sie Validator.fla, erstellen Sie eine neue Instanz des TextBox-Movieclips und geben Sie ihm den Instanznamen cardNumberField.

Erstellen Sie ein statisches Textfeld über der TextBox und schreiben Sie darin "Kartennummer:".

Geben Sie in Zeile 40 den folgenden Code ein:

Dadurch werden die Eingabedaten in der cardNumberField TextBox als Kartennummer mit der validator-Instanz der Validator-Klasse überprüft.

Testen Sie den Film und geben Sie eine Kartennummer in das mit "Kartennummer" beschriftete Textfeld ein.


Endgültiger Code

So sieht unsere letzte Klasse aus:

Ich habe dem Endergebnis Kommentare hinzugefügt, damit Sie sich daran erinnern, wie jede Methode funktioniert und wie der getestete Wert aussehen sollte.

Sie können diese Klasse in jedem Ihrer AS3-Projekte verwenden.


Abschluss

Denken Sie daran, dass selbst wenn Sie Ihre Daten validiert haben, diese möglicherweise nicht echt sind (wie im Fall von ISBNs, E-Mail-Adressen, IBANs usw.), da viele davon generiert oder zufällig sein können. Wenn Sie jedoch die Daten überprüfen, bevor Sie sie in Ihrer Datenbank registrieren, E-Mails senden oder an einen Zahlungsserver senden, können Tippfehler auftreten und der Benutzer auf den richtigen Weg gebracht werden.

Ich hoffe, dieses Tutorial zu verschiedenen Validierungen in ActionScript hat Ihnen geholfen, die Grundlagen der Validierung von Eingabedaten zu verstehen. Als Nächstes können Sie versuchen, diese Methoden zu ändern und sie restriktiver oder spezifischer für Ihre Bedürfnisse zu gestalten. Sie können auch versuchen, Ihre eigenen Validierungsmethoden für alle anderen Daten zu erstellen.

Vielen Dank für das Lesen meines Tutorials und hinterlassen Sie bitte Ihr Feedback dazu!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.