Erstellen eines Regex für Telefonnummern
In diesem Schritt lernen wir etwas über reguläre Ausdrücke (Regular Expressions, Regex) und wie man einen erstellt, um Telefonnummern zu matchen. Regex ist ein leistungsstarkes Werkzeug für die Mustererkennung in Zeichenketten. Es ist wie eine spezielle Sprache zur Beschreibung von Textmustern.
Warum benötigen wir Regex für Telefonnummern? Telefonnummern können in vielen Formaten auftreten (z.B. 123-456-7890
, (123) 456-7890
, 123.456.7890
). Mit Regex können wir ein Muster definieren, das all diesen Variationen entspricht.
Lassen Sie uns ein einfaches Java-Programm erstellen, das Regex verwendet, um zu prüfen, ob eine Zeichenkette wie eine Telefonnummer aussieht.
-
Öffnen Sie die Datei HelloJava.java
im WebIDE-Editor, wenn sie noch nicht geöffnet ist.
-
Ersetzen Sie den gesamten Inhalt der Datei durch folgenden Code:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HelloJava {
public static void main(String[] args) {
String phoneNumber = "123-456-7890"; // Die zu prüfende Zeichenkette
String regex = "\\d{3}-\\d{3}-\\d{4}"; // Das Regex-Muster
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(phoneNumber);
boolean isMatch = matcher.matches();
if (isMatch) {
System.out.println(phoneNumber + " ist ein gültiges Telefonnummerformat.");
} else {
System.out.println(phoneNumber + " ist kein gültiges Telefonnummerformat.");
}
}
}
Schauen wir uns die neuen Teile dieses Codes an:
import java.util.regex.Matcher;
und import java.util.regex.Pattern;
: Diese Zeilen importieren die notwendigen Klassen für die Arbeit mit Regex in Java.
String phoneNumber = "123-456-7890";
: Dies ist die Zeichenkette, die wir testen möchten.
String regex = "\\d{3}-\\d{3}-\\d{4}";
: Dies ist unser erstes Regex-Muster. Lassen Sie uns es zerlegen:
\\d
: Passt auf jede Ziffer (0 - 9) an. Wir verwenden \\
, weil \
ein Sonderzeichen in Java-Zeichenketten ist, also müssen wir es escapen.
{3}
: Passt auf das vorherige Element genau 3 Mal an.
-
: Passt auf das Bindestrich-Zeichen literal an.
- Somit passt
\\d{3}-\\d{3}-\\d{4}
auf drei Ziffern, gefolgt von einem Bindestrich, gefolgt von drei Ziffern, gefolgt von einem Bindestrich, gefolgt von vier Ziffern an.
Pattern pattern = Pattern.compile(regex);
: Dies kompiliert die Regex-Zeichenkette in ein Pattern
-Objekt, das für wiederholte Übereinstimmungen effizienter ist.
Matcher matcher = pattern.matcher(phoneNumber);
: Dies erstellt ein Matcher
-Objekt, das die Übereinstimmungsoperation auf unserer phoneNumber
-Zeichenkette mithilfe des kompilierten pattern
durchführt.
boolean isMatch = matcher.matches();
: Dies versucht, die gesamte Eingabezeichenkette (phoneNumber
) mit dem Muster zu vergleichen. Es gibt true
zurück, wenn die gesamte Zeichenkette übereinstimmt, und false
sonst.
- Der
if
- und else
-Block gibt einfach eine Nachricht aus, je nachdem, ob die Zeichenkette mit dem Muster übereinstimmt.
-
Speichern Sie die Datei (Strg+S oder Cmd+S).
-
Kompilieren Sie das Programm im Terminal:
javac HelloJava.java
Wenn keine Fehler auftreten, wird eine HelloJava.class
-Datei erstellt.
-
Führen Sie das kompilierte Programm aus:
java HelloJava
Sie sollten die Ausgabe sehen, die angibt, dass "123-456-7890" ein gültiges Telefonnummerformat gemäß unserem einfachen Regex ist.
In diesem Schritt haben Sie die Grundlagen der Verwendung von Regex in Java gelernt und ein einfaches Muster erstellt, um ein bestimmtes Telefonnummerformat zu matchen. In den nächsten Schritten werden wir unser Regex flexibler gestalten, um verschiedene Formate zu verarbeiten.