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

389
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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