Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

390
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!