Los caracteres en la función Javascript devuelven falso a pesar de que los caracteres no satisfacen la condición

Estoy tratando de aprender JavaScript ... Tengo una función como, tomo el campo de identificación de usuario de formato ... que es una dirección de correo electrónico y trato de verificar si coincide con la condición a continuación. Sin embargo, aunque doy el nombre de usuario> 3 y el dominio como gmail.com, sigo recibiendo un retorno falso ... ¿Alguien puede verificar y decirme por qué está entrando en el bucle if, tengo que recortar el texto o algo.

Además, si me puede decir cómo escribir esto de manera efectiva usando jQuery, eso me ayudaría a aprender. Pero si cree que estoy mezclando dos cosas aquí... Mi prioridad es la primera pregunta anterior.

function isValidate(eltt) {

    var flag      = true;
    var upos      = eltt.indexOf("@");
    var uendpos   = eltt.indexOf(".com");
    var totlength = eltt.length;
    var domain    = eltt.slice(upos,totlength);


    if ( upos < 3 | domain!="gmail.com" | uendpos=== -1) {
        flag=false;
    }

    return flag;
}

preguntado el 01 de julio de 12 a las 02:07

or los condicionales en Javascript son de dos tubos, ||, ni uno, |. -

1 Respuestas

Primero, el problema es que estás usando | en lugar de ||. (La | es un bit a bit o, que en este caso producirá un resultado básicamente aleatorio al combinar los bits de la representación binaria de sus condiciones. Lo más probable es que nunca necesites |; así que usa || y olvida eso | incluso hace cualquier cosa por sí mismo.)

En segundo lugar, esta validación sería más fácil con una expresión regular:

if (!eltt.match(/^.{3,}@gmail\.com$/)) {
  return false;
}

Es decir, debe comenzar con (^) al menos tres caracteres .{3,}, seguido del texto literal @gmail.com, sin nada después ($).

Respondido 01 Jul 12, 02:07

Muchas gracias por tu rápida respuesta. - VBJ

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.