• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mit Javascript Telefonnummer im richtigen Format erzwingen | RegEx

Status
Für weitere Antworten geschlossen.
hey htmlaner,
ich möchte, dass eine in ein input eingegebene Telefonnummer auf ein bestimmtes Format geprüft wird und wenn sie nicht diesem entspricht eine Fehlermeldung ausgegeben wird.
erwünschte Formate: 00000-00000000 oder 00000-00000000/00000-000000000

Das ist mein, nicht funktionierender bisheriger Versuch (mit jquery!):
Code:
$("input[name=tel]").blur( function() {
        var telR = /^[0-9]{3-5}\-[0-9]{4-9}[\/]?[0-9]?{3-5}[\-]?[0-9]?{4-9}$/;
        var tel = $(this).val();
        if(!telR.test(tel))
        {
            $(this).addClass("two");
            $("span.tel").text('Bitte gib die Telefonnummer im richtigen Format ein!');
        }
});
was ist daran Falsch bzw. gibt es einen besseren weg?

lg
 
Werbung:
Ist aber mit PHP

Deine Index.php:
HTML:
<form method="POST" action="ueberpruefeTel.php">
    <input type="text" name="telefon">
    <input type="submit" name="button">
</form>
Deine ueberpruefeTel.php:
PHP:
if(strlen($_POST['telefon']) < 14 and preg_match("/^(0{2}|\+)([0-9]{2,3})[[:space:]]([0-9]*)[[:space:]]([0-9]*)+$/i", $_POST['telefon']) 
{
  echo "OKay";
}
else 
{
  echo "Bitte gib die Telefonnummmer im richtigen Format ein!"
}
EDIT erweitert xD
 
Zuletzt bearbeitet:
Werbung:
erstmal vielen Dank, das ist sicher eine Möglichkeit (würde ich dann per AJAX machen..) ..aber das muss doch auch nur mit JavaScript (& jQuery), also client-seitig gehen..oder?

Edit: Zu deinem Script direkt: Um es zum laufen zu bringen fehlt noch eine Klammer in der if-Zeile. Außerdem verlangt der RegEx das Format +00 00000 000000 aber nicht mehr als 14 Zeichen. Mit Leer- & Sonderzeichen kommt das oft nicht hin.

Fazit: Die Frage ist weiterhin offen=)
 
Zuletzt bearbeitet:
Welches Format soll die Telefonnummer jetzt haben?

(1) 00000-00000000
(2) 00000-00000000/00000-000000000
(3) +00 00000 000000 (aber nicht mehr als 14 Zeichen)

Ich bin völlig verwirrt.
 
00000-00000000
00000/00000000
00000 00000000

wäre einfach
Code:
/\d{5}[-/ ]\d{8}/

Mit Handy und Ländervorwahl (6 bis 8 Ziffern):
Code:
/((\+49[ ]?|0)\d{3}|(\+49[ ]?\d{4}|\d{5}))[/- ]\d{6,9}/
fragt sich, inwieweit das noch sinnvoll ist.
 
Werbung:
Alternativvorschlag:

Lass die Leute ihre Nummer eingeben, wie sie wollen, wenn Du ein einheitliches Format brauchst, dann wandle die Nummer (serverseitig! damit nicht abschaltbar) selbst um.
Der eine gibt seine Nummer immer ohne Leerzeichen an, einer mit einem Strich nach der Vorwahl, der andere mit Klammern, der nächste nach irgendsoner ISO-Norm, nach der nach jeweils 2 Stellen ein Leerzeichen kommen muss, und wieder andere nutzen die internationale Schreibweise mit +, ein letzter macht Punkte nach jeweils zwei Ziffern. Da gibts so viele Möglichkeiten, und wenn jemand die Nummer nicht in seinem gewohnten Format eingeben kann, ist er von Deinem Formular tierisch genervt.
 
Vielleicht ist auch das hier interessant: jQuery masked input plugin

Da serverseitige Validierung ohnehin stattfinden muss, würde ich aber auch den von Effchen vorgeschlagenen Weg wählen und den Nutzer erstmal eintippen lassen, was er für richtig hält.
 
Welches Format soll die Telefonnummer jetzt haben?

(1) 00000-00000000
(2) 00000-00000000/00000-000000000
(3) +00 00000 000000 (aber nicht mehr als 14 Zeichen)

Ich bin völlig verwirrt.
Die Telefonnummer soll entweder das Format 00000-000000000 oder das Format 00000-00000000/00000-000000000 (mit zwei Nummern) haben. (Variante (3) kam nur durch Akronym auf )

Die Zahlen vor dem Bindestrich stellen die Ortsvorwahl dar und genau da liegt das Problem der späteren (serverseitigen) Umwandlung. Wenn der User beispielsweise die nummer völlig ohne Trennzeichen eingibt, kann ich sie später nicht trennen, da Ortvorwahlen zwischen 3 und 5 (glaube ich) Zeichen haben können. Daher möchte ich den User direkt dazu bringen die Nummer richtig einzugeben.

Also weiterhin die Frage:
Wie bringe ich das obige Script dazu nur folgende Möglichkeiten für eine bzw. zwei Telefonnummern anzunehmen:
(1): 00000-000000000
(2): 00000-000000000/00000-000000000

lg
 
Werbung:
Wenn der User beispielsweise die nummer völlig ohne Trennzeichen eingibt, kann ich sie später nicht trennen, da Ortvorwahlen zwischen 3 und 5 (glaube ich) Zeichen haben können. Daher möchte ich den User direkt dazu bringen die Nummer richtig einzugeben.
Und das macht ja jeder User auch richtig, gell?
Dann kommt der Hamburger her und gibt ein 04099-1234567 und was machst Du dann? Das ist für Dich der selbe Käse wie 040991234567. Ich trenne die Vorwahl immer mit /, ich wäre von Deinem Formular schon genervt, wenn ich das nicht darf.

Wenn Du die Vorwahl extra brauchst, dann bieten sich zwei Möglichkeiten an:
1. Eigenes Eingabefeld für die Vorwahl (kann auch nervlich sein, nimmt man aber durchaus hin).
2. Du besorgst Dir einen Vorwahl-Bestand, sowas wird man doch irgendwo kriegen! Und dann gleichst Du ab und extrahierst die Vorwahl selbständig. Dann würdest Du auch die Falscheingabe aus meinem Beispiel oben erkennen und könntest die Vorwahl da trennen, wo sie getrennt werden muss.
 
/\d{4,5}-\d{8}(/\d{4,5}-\d{8})?/
@crash
Das ist schonmal super - das einzige Problem besteht noch darin, dass JavaScript den Slash am Anfang der zweiten Nummer (Position 16) für ein RegEx-Trennzeichen hält und daher wegen eines Syntax-Error nicht ausgeführt wird. Wie kann ich JavaScript dazu bringen den Slash als Slash und nicht als Trennzeichen zu sehen? (einen Backslash voranstellen funktioniert nicht..)
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben