Autor Tema: JavaScript validaciones ver si falta el simbolo @ en correo electronico CU01155E  (Leído 2346 veces)

JuansT

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 44
    • Ver Perfil
Respuesta para el ejercicio CU01155E del tutorial de programación en internet con JavaScript.

De largo el ejercicio que más tiempo me ha llevado a hacer, y lo peor de todo no fue por la dificultad del ejercicio, sino por que había olvidado que se podía hacer un toLowerCase() a un string, pensaba que sólo se podía hacer a un char   :-[ :-[, dejo como comentario dentro del código lo que me llevó una hora pensar en cómo podía aplicar toLowerCase() a los char's del email y que luego vi que so solucionaba con sólo una linea ::)

Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function validacionConExpReg(){
var regExpAt = /\sat\s/
var regExp1 = /[A-Za-z]{3,}/
var regExp2 = /(^\w+@\w+\.\w+)$|(^\w+@\w+)$/
var regExp3 = /(^\w+@\w+\.\w+)$|(^\w+\.\w+)$/
var regExpMayus = /[A-Z]/g
var formularioElems = document.getElementsByClassName('elem');

if(formularioElems[2].value.match(regExpAt)){formularioElems[2].value.replace(regExpAt,'@');}
var matches1 = formularioElems[0].value.match(regExp1);
var matches2 = formularioElems[2].value.match(regExp2);
var matches3 = formularioElems[2].value.match(regExp3);

if(!matches1){alert('El nombre no cumple tener al menos tres letras');}

if(!matches2 && !matches3){alert("faltan tanto @ como . en el correo electronico");
}else if(!matches2){alert("Falta el simbolo @ en el correo electronico o esta mal colocado");
}else if(!matches3){alert("Falta el simbolo . en el correo electronico o esta mal colocado");}

formularioElems[2].value = formularioElems[2].value.toLowerCase(); //Todo lo de abajo es lo mismo que esta línea (jajaj)

/*var emailMatchs = formularioElems[2].value.match(regExpMayus);
var emailArray = formularioElems[2].value.split("");
var emailPos;
for(var i=0;i<emailMatchs.length;i++){
emailPos = formularioElems[2].value.search(regExpMayus);
emailArray[emailPos] = emailArray[emailPos].toLowerCase();
formularioElems[2].value = emailArray.join("");
}
*/

}
</script>
</head>
<body>
<form name="formulario" action="http://www.google.es" method="GET" onsubmit="validacionConExpReg()">
<input type="text" class="elem" name="nombre" placeholder="nombre">
<input type="text" class="elem" name="apellido" placeholder="apellido">
<input type="text" class="elem" name="email" placeholder="email">
<input type="submit" class="elem" value="submit">
</form>
</body></html>
« Última modificación: 15 de Abril 2017, 19:28 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:JavaScript. Paréntesis en expresiones regulares. CU01155E
« Respuesta #1 en: 16 de Febrero 2017, 16:16 »
Hola JuansT.

Apartados a, b y c bien solucionados, sólo aportar una expresión regular que acepte la letra ñ y letras acentuadas ya que la expresión que usaste no las reconoce como caracteres válidos.

Código: [Seleccionar]
var regExp1 = /[A-Za-z ñÁáÉéÍiÓóÚú]{3,}/;
Y el apartado d se te olvidó resolverlo.

Saludos. ;D

JuansT

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 44
    • Ver Perfil
Re:JavaScript. Paréntesis en expresiones regulares. CU01155E
« Respuesta #2 en: 16 de Febrero 2017, 17:32 »
Buenas Pedro, el apartado d no se me olvidó resolverlo, si ves en el código la expresión regular referente a lo que pide el apartado d lo tengo en la variable "regExpAt" y  un poco más abajo en la línea 11 está el if que lo usa, lo que sí pasó es que olvidé poner donde se guarda el resultado de formularioElems[2].value.replace(regExpAt,'@')  que sería en el mismo sitio, entonces la línea de código dentro de ese if quedaría así (en verde lo que faltaba);

formularioElems[2].value = formularioElems[2].value.replace(regExpAt,'@');


Dejo el código entero con esta corrección:

Código: [Seleccionar]
<!DOCTYPE html>
<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<script type="text/javascript">
function validacionConExpReg(){
var regExpAt = /\sat\s/
var regExp1 = /[A-Za-z]{3,}/
var regExp2 = /(^\w+@\w+\.\w+)$|(^\w+@\w+)$/
var regExp3 = /(^\w+@\w+\.\w+)$|(^\w+\.\w+)$/
var regExpMayus = /[A-Z]/g
var formularioElems = document.getElementsByClassName('elem');
if(formularioElems[2].value.match(regExpAt)){formularioElems[2].value = formularioElems[2].value.replace(regExpAt,'@');}
var matches1 = formularioElems[0].value.match(regExp1);
var matches2 = formularioElems[2].value.match(regExp2);
var matches3 = formularioElems[2].value.match(regExp3);

if(!matches1){alert('El nombre no cumple tener al menos tres letras');}

if(!matches2 && !matches3){alert("faltan tanto @ como . en el correo electronico");
}else if(!matches2){alert("Falta el simbolo @ en el correo electronico o esta mal colocado");
}else if(!matches3){alert("Falta el simbolo . en el correo electronico o esta mal colocado");}

formularioElems[2].value = formularioElems[2].value.toLowerCase(); //Todo lo de abajo es lo mismo que esta línea (jajaj)*/

/*var emailMatchs = formularioElems[2].value.match(regExpMayus);
var emailArray = formularioElems[2].value.split("");
var emailPos;
for(var i=0;i<emailMatchs.length;i++){
emailPos = formularioElems[2].value.search(regExpMayus);
emailArray[emailPos] = emailArray[emailPos].toLowerCase();
formularioElems[2].value = emailArray.join("");
}
*/

}
</script>
</head>
<body>
<form name="formulario" action="http://www.google.es" method="GET" onsubmit="validacionConExpReg()">
<input type="text" class="elem" name="nombre" placeholder="nombre">
<input type="text" class="elem" name="apellido" placeholder="apellido">
<input type="text" class="elem" name="email" placeholder="email">
<input type="submit" class="elem" value="submit">
</form>
</body></html>


« Última modificación: 15 de Abril 2017, 19:26 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:JavaScript. Paréntesis en expresiones regulares. CU01155E
« Respuesta #3 en: 16 de Febrero 2017, 21:36 »
Tienes razón, no lo ví.

Ahora todo bien.

Saludos. ;D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".