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

391
Visualizações
¿Puedo escribir expresiones regulares y usar .test() como este en javascript?

De acuerdo, soy muy nuevo en javascript y tengo una pregunta sobre el uso de expresiones regulares en él.

¿Puedo escribir expresiones regulares y usar .test() como este para una respuesta basada en mensajes de un bot de discordia para probar y dar una respuesta de mensaje como esta en función de si coincide?

 let myRegex = /morning/i; if (myRegex.test(msg.content)) { msg.reply("Good Morning!"); } myRegex = /some text/i; if (myRegex.test(msg.content)) { msg.reply("Bot replies to some text"); } myRegex = /some other text/i; if (myRegex.test(msg.content)) { msg.reply("bot replies to some other text"); }

Parece que funciona, pero mientras se ejecuta. Pero por alguna razón, parece que esta es la forma incorrecta de hacer las cosas, ya que estoy especificando myRegex cada vez antes de .test().


Antes de esto, inicialmente usaba declaraciones if como esta, pero el problema era que tenía que escribir un mensaje separado cuando había más palabras, ya que solo verificaría ese mensaje exacto:

 if (msg.content.toLowerCase() === 'morning') { msg.reply('https://media.giphy.com/media/34dapC0zP8iSQ0wjHX/giphy.gif '); }

Me di cuenta de que el segundo código solo funcionaría para entradas de mensajes como 'mañana' o 'Mañana' o 'MAÑANA', pero no funcionaría para 'buenos días' o 'Buenos días', 'BUENOS DÍAS', etc.

Por lo tanto, estoy pensando en pasarme a las expresiones regulares, pero quiero asegurarme de que lo estoy haciendo bien.

¿Puede alguien por favor me ayude con esto?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Lo que estás haciendo está perfectamente bien. El único pequeño problema potencial (que es solo estilístico) es que está reasignando innecesariamente una variable.

Si cree que declarar el patrón con anticipación y ponerlo en una variable parece extraño, puede hacerlo en línea (y es posible que desee usar else if para que no haya múltiples respuestas al mismo mensaje en caso de que coincide con múltiples pruebas)

 } else if (/some text/i.test(msg.content)) { msg.reply("Bot replies to some text"); } else if (/some other text/i.test(msg.content)) { msg.reply("bot replies to some other text"); }
about 4 years ago · Juan Pablo Isaza Relatório

0

Puede comprobar si una cadena incluye otra cadena como subcadena con el método includes :

 if (msg.content.toLowerCase().includes('morning')) { // ... }
about 4 years ago · Juan Pablo Isaza Relatório

0

Para responder a la pregunta, ¿debería redefinir la variable RegEx cada vez? Respuesta corta - No.

Aunque no hay ninguna desventaja obvia en este ejemplo específico, la redefinición de las variables que se usan de esta manera puede generar errores con contenido desconocido.

Alinearía las expresiones regulares, aunque también podría crear una nueva variable para cada verificación. Aquí hay un ejemplo con las expresiones regulares en línea:

 if (/morning/i.test(msg.content)) { msg.reply("Good Morning!"); } if (/some text/i.test(msg.content)) { msg.reply("Bot replies to some text"); } if (/some other text/i.test(msg.content)) { msg.reply("Bot replies to some other text"); }

Si lo prefiere, puede envolver la expresión regular entre paréntesis.

 if ((/morning/i).test(msg.content)) { /* ... */ }
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