JavaScript: prueba vs ejecutivo

Me gustaría saber cuál es la mejor manera de verificar una cadena, por ejemplo (correo, contraseña, etc.).

/^...$/i.exec(a)

vs

/^...$/i.test(a)
  • ejecutivo devuelve valor
  • test verdadero

prueba:

// 1° way
var mail = req.body.mail;
if(check(mail)){

ejecutivo:

// 1° way
var mail = req.body.mail;
if(check(mail)){

// 2° way
var mail = check(req.body.mail);
if(mail){

ejecutivo or test ? y que numero (1° o 2° si es exec)

SOLUTION

test es mejor para este caso.

  • seguramente será más rápido.

Sin embargo, el más importante

  • test realiza todo su trabajo. Mientras ejecutivo no realizó, porque se puede hacer más, pero no necesitamos.
  • Como dijo Mattias Buelens, usar isMail() es más lógico: es un correo electrónico: sí o no. Mientras ejecutivo: es un correo electrónico: correo electrónico o nulo -> wtf ? jajaja

preguntado el 12 de junio de 12 a las 22:06

¿A qué te refieres con "la mejor manera"? -

1er. Depende de lo que estés tratando de hacer. ¿Necesita grupos de coincidencia/captura y demás o simplemente validar para verificar si su cadena proporcionada coincide con una expresión regular? Además, la segunda pregunta se basa en la preferencia, tendrá el mismo resultado. Debe elegir cuál es más legible y fácil de mantener para usted o su equipo. -

hay dos soluciones, hay diferentes, entonces creo que una de ellas es la mejor EDITAR @Fabrício Matté: solo valide. Sí, creo que la primera forma es mejor porque es más legible y lógica. (para ti ;) ) -

.test devolverá un valor booleano true or false así que es óptimo para esa situación. Ambos devolverían valores que se evalúan como true/false, pero si no necesita almacenar coincidencias o capturar grupos, entonces .test servirá. =] -

Bien, gracias hombre. Sí no quería hablar de microoptimización. Pero en este caso... Ambos tienen el mismo nivel de legibilidad. Pero la prueba es mejor para esta manera. ¡Más lógico y más rápido! EDITAR Como estás aquí;) me gustaría saber si estoy obligado a verificar si la variable no está definida al mismo tiempo que la expresión regular. ¿O tienes una técnica mejor? gracias -

1 Respuestas

Si solo necesita probar una cadena de entrada para que coincida con una expresión regular, RegExp.test es lo más apropiado. te dará un boolean valor de retorno que lo hace ideal para las condiciones.

RegExp.exec le brinda un valor de retorno similar a una matriz con todos los grupos de captura e índices coincidentes. Por lo tanto, es útil cuando necesita trabajar con los grupos o índices capturados después de la coincidencia. (También, se comporta un poco diferente en comparación con String.match al usar el modificador global /g)

En última instancia, no importará mucho en velocidad o eficiencia. La expresión regular aún se evaluará y todos los grupos e índices coincidentes estarán disponibles a través del global RegExp objeto (aunque es muy recomendable que utilice los valores de retorno).

En cuanto a las if prueba, eso es solo una cuestión de gusto personal. Asignar el resultado de la prueba de expresión regular a una variable con un nombre significativo (como isEmail) podría mejorar la legibilidad, pero aparte de eso, ambos están bien.

Respondido el 22 de enero de 13 a las 15:01

Es una buena explicación, aunque tiene algunas fallas. "RegExp.exec le da un valor de retorno similar a una matriz con todos las capturar grupos e índices coincidentes". No realmente. Devolverá una matriz con la primera coincidencia en el índice [0] y sus posteriores grupos de captura en los siguientes índices. No devuelve todas las coincidencias/grupos de captura, solo la primera coincidencia con todos sus grupos de captura. Sin embargo, itera a través de él con, por ejemplo, un while bucle que almacena automáticamente el lastIndex propiedad en el objeto regex, como se muestra en el enlace de MDN que proporcionó. - fabricio matte

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.