JavaScript - Regulär Expression

6. Februar 2010 12:21

Da dies in vielen Beiträgen immer wieder gefragt wurde, habe ich hier einmal ein kleines Beispiel geschrieben, wie die Telefonnummer eines Feldes mit Regulär Expressions überprüft werden kann.

Diese Expression prüft auf Ländervorwahl mit + und 1-4 Stellen, danach ein Leerzeichen und dann ein beliebiges der folgenden Zeichen: 0123456789() und das Leerzeichen
\+[0-9]{1,4} ?(0?[ \(\)0-9]{1,})$

Im OnLoad des Formulars wird dafür diese Funktion hinterlegt.
Code:
tsCheckPhone = function(tel)
{
  var regEx = /^\+[0-9]{1,4} (0?[ \(\)0-9]{1,})$/;
  return tel.match(regEx);
}

Die Regulär Expression kann dabei natürlich gegen jede gewünschte, gültige expression ausgetauscht werden, je nachdem, was geprüft werden soll.

Im OnSave des Formulars wird dann geprüft, ob das Feld richtig gefüllt ist und wenn nicht, wird das speichern verhindert.
Code:
if(crmForm.all.telephone1)
{
   if(crmForm.all.telephone1.DataValue != null)
   {
      var telephonenumber = tsCheckPhone(crmForm.all.telephone1.DataValue);

      if(!telephonenumber)
      {
         alert('Ungültige Nummer, bitte verwenden Sie +49 (251)123456');
         crmForm.all.telephone1.SetFocus();
         // Durch diese 2 Befehle wird der Datensatz nicht gespeichert!!!
         event.returnValue=false;
         return false;   
      }
   }
}

Damit der Benutzer nicht erst beim speichern darauf hingewiesen wird, das die Telefonnummer nicht korrekt ist, sollte diese natürlich auch zusätzlich im OnChange des Feldes überprüft werden:
Code:
if(crmForm.all.telephone1.DataValue != null)
{
   var telephonenumber = tsCheckPhone(crmForm.all.telephone1.DataValue);

   if(!telephonenumber)
   {
     alert('Ungültige Nummer, bitte verwenden Sie +49 (251) 123456');
     crmForm.all.telephone1.SetFocus();
   }
}

Re: JavaScript - Regulär Expression

14. Februar 2010 13:27

:-D

Vielen Dank - prima Skript.

Ich habe den regulären Ausdruck für folgende Option noch geschrieben (falls jemand diese benötigt):

+49 7351 7777-1111
oder (mit max. Anzahl der Zeichen)
+49 1234567 1234567-1234567

Hintergrund: nun kann man noch Durchwahlnummern genau formatiert vorgeben.

Die regEx im obigen Skript mit folgendem ersetzen:

var regEx = /^\+[0-9]{1,4} [0-9]{1,7} [0-9]{1,7}\-?[0-9]{1,7}$/;

Natürlich kann man für Buchstaben-Nummern (oft in USA gebraucht) auch diese Formatierung noch erweitern.