regexp funktioniert nicht richtig
RegExp
- javascript
Hallo Leute!
Kann mir einer sagen warum mein JS nicht richtig funktioniert?
function checkemail( value ) {
var regexp = new RegExp( "[a-zA-Z0-9_.-]@[a-zA-Z0-9._-]*\.[a-zA-Z.]{2,5}" );
var check = regexp.test( value );
if( !check )
alert( "keine g" + unescape( "%FC" ) + "ltige Email Adresse!" );
}
Der Teil zwischen @ und . funktioniert wie es soll der Rest irgendwie nicht.
Beim Ende z.B. meckert er zwar wenn es unter 2 Zeichen sind aber nicht wenn es über 5 Zeichen sind und gegen Sonderzeichen hat er auch nichts obwohl ja nur a-z A-Z und . erlaubt sein sollen.
Dies gilt auch vor dem @ wo Sonderzeichen auch erlaubt sind wieso auch immer. Was mache ich falsch?
Hallo,
var regexp = new RegExp( "[a-zA-Z0-9_.-]@[a-zA-Z0-9._-]*\.[a-zA-Z.]{2,5}" );
. statt .
. bedeutet »jedes beliebige Zeichen«.
Auch innerhalb von [] musst du das escapen.
Mathias
Hi,
. statt .
. bedeutet »jedes beliebige Zeichen«.
Auch innerhalb von [] musst du das escapen.
Ist das in Javascript wirklich so?
Würde mich wundern, da das üblicherweise nicht der Fall ist.
cu,
Andreas
Hallo,
Ist das in Javascript wirklich so?
Würde mich wundern, da das üblicherweise nicht der Fall ist.
/^[.]+$/.test("Stimmt, du hast Recht!")
Mathias
Hallo,
Beim Ende z.B. meckert er zwar wenn es unter 2 Zeichen sind aber nicht wenn es über 5 Zeichen sind und gegen Sonderzeichen hat er auch nichts obwohl ja nur a-z A-Z und . erlaubt sein sollen.
Dies gilt auch vor dem @ wo Sonderzeichen auch erlaubt sind wieso auch immer. Was mache ich falsch?
Die Grundidee eines Regex ist, eine bestimmte Zeichenfolge innerhalb eines großen Strings zu finden. Ein RegEx /abcde/ wird auch im String 1234abcdefg... gefunden. Um nachzuprüfen, ob der ganze String der Regel folgt, empfiehlt es sich, Anfangs- und Endbedingung zu setzen. Dann aber muss die Regel abschließend von vorne nach hinten stimmen (es fehlt ein Plus). Richtiger ist also:
var regexp = new RegExp("[1]+@[a-zA-Z0-9._-]+*\.[a-zA-Z.]{2,5}$");
viele grüße
ralph
a-zA-Z0-9_.- ↩︎
Hi,
Beim Ende z.B. meckert er zwar wenn es unter 2 Zeichen sind aber nicht wenn es über 5 Zeichen sind
Und das ist gut so, es gibt TLDs mit mehr als 5 Zeichen.
Dies gilt auch vor dem @ wo Sonderzeichen auch erlaubt sind wieso auch immer. Was mache ich falsch?
Du prüfst nur genau 1 Zeichen vor dem @, erlaubst direkt nach dem @ einen Punkt, und prüfst nur die ersten zwei bis fünf Zeichen nach dem .
alert( "keine g" + unescape( "%FC" ) + "ltige Email Adresse!" );
Was ist das denn für ein Konstrukt?
cu,
Andreas
Hallo,
alert( "keine g" + unescape( "%FC" ) + "ltige Email Adresse!" );
Was ist das denn für ein Konstrukt?
»Ich weiß nicht, wie ich meine Dateien mit einer bestimmten Kodierung speichern und an den Browser ausliefern kann und muss deshalb ASCII verwenden. Ich will aber trotzdem Umlaute haben, und da ich nicht weiß, wie Unicode-Escape-Sequenzen in JavaScript aussehen, habe ich einfach mal (un)escape verwendet.«
Mathias