Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

317
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda