¡Hola!
@Sebastián
Realmente tu codigo siempre devolvera el valor true
, es por eso que las pruebas que deben devolver true
pasan.
Puedes comprobarlo agregando la siguiente linea de codigo y escribiendo lo que quieras:
console.log(telephoneCheck("ESCRIBE AQUI LO QUE QUIERAS"));
Lo anterior ocurre debido a que estas inicando tu bucle con let i = str,
entonces no importa lo que escribas, la condicion siempres se cumplira de inicio y siempre devolvera el valor true
, Ademas en esta linea return true;
le dices a tu codigo que siempre devuelva true
ya que no hay ninguna condicion para que haga algo diferente.
Tambien te comento que aunque actualmente esta linea nunca se ejecuta numero.test( )
por lo que te comente en le parrafo anterior, en caso de que se ejecutara no haria nada porque no estas pasando ningun valor al metodo test
Ahora para ayudarte y que puedas seguir adelante, te comento que utilizar un bucle en este caso puede no ser la mejor solucion, no tocare tu expresion regular
ya que ese es realmente el trabajo que estas haciendo, pero puedes modificar tu codigo para que quede de la siguiente forma:
function telephoneCheck(str) {
let numero = /^[(]?[0-9]{0,9}[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}[)]?$/im
return numero.test(str) ? true : false;
}
Este linea return numero.test(str) ? true : false;
comprueba si el valor introducido cumple con lo dice la expresion regular
, en cuyo caso devolvera true
de lo contrario devolvera false
.
Ya solo tienes que trabajar en la expresion regular.
O si quieres mantener el bucle puedes modificar tu codigo para que quede de la siguiente forma:
function telephoneCheck(str) {
let resultado;
for(let i = 0; i < str.length; i++){
let numero = /^[(]?[0-9]{0,9}[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}[)]?$/im
numero.test(str) ? resultado = true : resultado = false;
}
return resultado
}
Pero como te comente el bucle es inecesario.
saludos