JavaScript - Regulär Expression
Verfasst: 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.
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.
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:
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();
}
}