JS ist nicht ansprechbar
E wie einfach
- javascript
0 Struppi0 Kai3450 Gunnar Bittersmann
Hi,
ich habe folgende PHP Zeile:
echo "<div class="InsertForm"><form action="insert.php" method="POST" name="InsertForm" onsubmit="return Check()">";
welche Check() aufrufen soll. Check() selber ist so definiert:
function Check() {
alert("hi");
var Result = document.forms["InsertForm"].elements["eMail"].value.match(/[a-z0-9_-]+(.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z].)+([a-z]{2,4}|museum)/i);
if(!Result) {
alert("Bitte geben Sie Ihre gültige eMail Adresse ein.");
return false;
}
Er gibt mir aber nichtmal das alert("hi"); das ich zum Test eingefügt habe aus. Wieso?
Er gibt mir aber nichtmal das alert("hi"); das ich zum Test eingefügt habe aus. Wieso?
Schau mal in die Fehlerkonsole.
Struppi.
Schau mal in die Fehlerkonsole.
Struppi.
Jetzt ohne, dass ich in die Fehlerkonsole geschaut habe (Wo finde ich die eigentlich?) funktioniert es aufeinmal - zumindest wird hi ausgegeben. Vllt war noch eine alte Version im Cache, obwohl ich bestimmt 10 mal F5 gedrückt habe?
Nunja wie auch immer. eMails ala asdflkj@asldkgj werden bei meiner RegEx als funktionierend gemeldet. Weiß jemand warum? Das Thema müsste nun also zu RegEx funktioniert nicht geändert werden...
Und manche eMails erkennt er als nicht funktionsfähig. Das heißt die Funktion wird auch ausgeführt!
Nunja wie auch immer. eMails ala asdflkj@asldkgj werden bei meiner RegEx als funktionierend gemeldet. Weiß jemand warum?
"0-9_-]+(.[a-z0-9_-]+)" (ein Teil deines regulären Ausdruckes)
also wenn ich das jetzt nicht komplett falsch verstehe, wird der "." nicht als Punkt gewertet sondern als regulärer Ausdruck, was wiederum bedeutet, dass an dieser Stelle nur irgendein x-beliebiges Zeichen stehen muss...
cuz thecreep
Nunja wie auch immer. eMails ala asdflkj@asldkgj werden bei meiner RegEx als funktionierend gemeldet. Weiß jemand warum?
"0-9_-]+(.[a-z0-9_-]+)" (ein Teil deines regulären Ausdruckes)
also wenn ich das jetzt nicht komplett falsch verstehe, wird der "." nicht als Punkt gewertet sondern als regulärer Ausdruck, was wiederum bedeutet, dass an dieser Stelle nur irgendein x-beliebiges Zeichen stehen muss...
cuz thecreep
Hmm, der Punkt steht für ein beliebiges Zeichen außer Leerzeichen, soweit ich weiß. Das ist dafür gedacht, dass Konstrukte wie bla.bla@web.de oder bla_bla@web.de erstellt werden können. Es darf halt nur kein Whitespace enthalten sein, was durch "." abgedeckt wird. Richtig oder irre ich mich?
Und wenn das richtig ist wo liegt dann der Fehler, dass mein RegEx trotzdem fehlerhafte eMail Adressen verifiziert?
Hallo,
also wenn ich das jetzt nicht komplett falsch verstehe, wird der "." nicht als Punkt gewertet sondern als regulärer Ausdruck
schlechte Formulierung. :-)
Das ganze Ding ist ein regulärer Ausdruck, und darin hat der Punkt eine Sonderbedeutung. Er steht nämlich für "irgendein beliebiges Zeichen".
Hmm, der Punkt steht für ein beliebiges Zeichen außer Leerzeichen, soweit ich weiß.
Nein, einschließlich Leerzeichen. Ein Punkt matcht jedes Zeichen.
Und wenn das richtig ist wo liegt dann der Fehler, dass mein RegEx trotzdem fehlerhafte eMail Adressen verifiziert?
Das ist ein generelles Problem: e-Mail-Adressen sind so komplex (auch wenn es nicht so aussieht), dass man ihre Gültigkeit nur schwer mit einem RegEx überprüfen kann. Viel mehr als "mindestens ein Zeichen vor dem @, und mindestens ein Zeichen nach dem @" zu prüfen, ist eigentlich vergebliche Liebesmüh. Prüfst du zu streng, wird irgendwann einer daherkommen und feststellen, dass seine Mailadresse nicht angenommen wird.
So long,
Martin
Hi,
Hi,
Nein, einschließlich Leerzeichen. Ein Punkt matcht jedes Zeichen.
Abhängig vom s-Modifier "jedes Zeichen" oder "jedes Zeichen außer Zeilenumbruch".
cu,
Andreas
--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
cu,
Andreas
@@E wie einfach:
nuqneH
fehlerhafte eMail Adressen
Warum schreibst du „E-Mail-Adressen“ immer noch fehlerhaft?
Qapla'
[latex]Mae govannen![/latex]
function Check() {
alert("hi");
var Result = document.forms["InsertForm"].elements["eMail"].value.match(/[a-z0-9_-]+(.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z].)+([a-z]{2,4}|museum)/i);
if(!Result) {
alert("Bitte geben Sie Ihre gültige eMail Adresse ein.");
return false;
}
Ich sehe hier eine unterschiedliche Anzahl öffnender und schließender geschweifter Klammern.
Cü,
Kai
Ich sehe hier eine unterschiedliche Anzahl öffnender und schließender geschweifter Klammern.
Tut mir leid das ist ein Fehler meinerseits - ich habe beim rauskopieren meines Codes etwas nicht mitkopiert. Es liegt aber nicht an der fehlenden }
@@E wie einfach:
nuqneH
ich habe folgende PHP Zeile:
Serverseitiger Code ist bei einem clientseitigen Problem irrelevant.
alert("Bitte geben Sie Ihre gültige eMail Adresse ein.");
Berichtige bitte auch die Rechtschreibfehler: nicht „eMail“, kein Deppenleerzeichen, sondern „E-Mail-Adresse“.
Qapla'