2017-02-15 3 views
0

Ich habe eine einfache JS-Funktion für E-Mail wie diese Validierung (der kompliziertere Schnipsel nicht funktioniert so kommentierte es mich aus und vereinfachte, was ich habe, aber es immer noch nicht funktioniert):Regex funktioniert nicht von JavsScript-Funktion - warum?

function validateEmail(email) { 
 
    //var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; 
 
    //return re.test(email); 
 
    var re = /\[email protected]\S+\.\S+/; 
 
    return re.test(email); 
 
} 
 

 
console.log(`TESTING THE VALIDATE FUNCTION - [email protected] RETURNS: ${validateEmail("[email protected]")}`);

Wenn ich das in der Konsole ausführen, funktioniert es gut. Wenn ich dies von meinem Code (A/B-Test-Tool) aus führe, wird jedes Mal falsch zurückgegeben, obwohl ich True erwarte. Ich habe das Gefühl, dass ich meinen Kopf gegen die Wand schlagen muss, weil ich es nicht herausfinden kann. Irgendeine Idee, warum das passieren könnte?

+1

/\[email protected]\w+\.\w+/; –

+2

Wenn es in der Konsole funktioniert, ist es vielleicht nicht die Regex, sondern die Art, wie Ihre A/B-Tools es überprüfen. Weißt du, mit welcher Methode die Regex abgeglichen wird? – Nicolas

+1

Fügen Sie möglicherweise mehr zur Protokollnachricht hinzu, damit Sie die Eingabezeichenfolge sehen können. Oder melden Sie es in der 'validateEmail'-Funktion an, damit es Ihnen immer anzeigt, was es empfängt. Dies sollte Ihnen helfen, herauszufinden, warum es nicht funktioniert. Wie @Nicolas sagte, mit diesem Code gut funktioniert, ist es fast sicher, dass die A/B-Tests, die Sie verwenden. – Whothehellisthat

Antwort

1

festgestellt, dass das Werkzeug, das ich verwende automatisch einige Zeichen in meiner Regex-Zeichenfolge entkam. Daher wurde meine Zeichenfolge nicht korrekt ausgewertet. Für Interessierte ist das A/B-Test-Tool, das ich verwende, SiteSpect.