Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

314
Vistas
¿Cómo creo una validación en múltiples valores usando expresiones regulares en Javascript node.js?

Esto es lo que he probado:

 let args = getArgs(message, commandRecd).split(","); if (args == validday && !validdays && !validhour && !validhours && !validminute && !validminutes ){ countdown() } if (args == validdays && !validday && !validhour && !validhours && !validminute && !validminutes ){ countdown() } if (args == validhour && !validday && !validdays && !validhours && !validminute && !validminutes ){ countdown() } if (args == validhours && !validday && !validdays && !validhour && !validminute && !validminutes ){ countdown() } if (args == validminute && !validday && !validdays && !validhour && !validhours && !validminutes ){ countdown() } if (args == validminutes && !validday && !validdays && !validhour && !validhours && !validminute ){ countdown() }

La expresión regular validada es:

 const validday = /\dday/ const validdays = /\dday/ const validhour = /\dhour/ const validhours = /\dhours/ const validminute =/\dminute/ const validminutes = /\dminutes/

Pero cuando probé e hice mi solicitud como 1 minuto, la cuenta regresiva no comienza.

pd: no hay problema con el código de cuenta regresiva, ya que el código de cuenta regresiva en sí funciona cuando lo ejecuto sin validación de expresiones regulares.

pps: usando discord.js

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema aquí es que args es una matriz ( args.split devuelve una matriz) y está intentando validar args como una cadena. ( args == validday , etc.) Dado que args es una matriz y no una expresión regular, la declaración if/else devuelve falso, por lo que su función de cuenta regresiva no se ejecuta. Además de eso, no debería usar == para validar una cadena usando expresiones regulares, use .test en su lugar para un valor verdadero/falso.

Además de eso, no se recomienda usar múltiples bloques if else con los mismos parámetros, ya que cuantos más bloques if else agregue, más difícil será depurar y cambiar valores, por lo que cambié esto en un bucle for..in para hacer es más limpio.

El siguiente código supone que el segundo elemento en args es la información que está buscando. Es posible que deba editar esto si es necesario.

He reescrito tu código aquí, con documentación sobre lo que significa cada línea:

 let args = getArgs(message, commandRecd).split(","); //second element of args, change this as needed, this is the data that we are checking the regex against var data = args[1] //These are the regexes that we are checking data against var validationArr = [/\dday/, /\dhour/, /\dhours/, /\dminute/, /\dminutes/] //for every element in validationArr, we check it against the data to see if we get a match var i = 0; //counts the number of times we get a match for(x in validationArr){ //.test returns true if there is a match if(validationArr[x].test(data)){ i++; } } //this means that we have only gotten one match out of all the regexes. if(i == 1){ countdown() }

Más lecturas sobre <Regex>.test() ¡Espero que esto ayude! Siéntete libre de comentar si no entiendes una línea.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda