Muchas veces estoy usando la matchfunción de cadena para saber si una cadena coincide con una expresión regular.
if(str.match(/{regex}/))
¿Hay alguna diferencia entre esto?
if (/{regex}/.test(str))
¿Parecen dar el mismo resultado?
Muchas veces estoy usando la matchfunción de cadena para saber si una cadena coincide con una expresión regular.
if(str.match(/{regex}/))
¿Hay alguna diferencia entre esto?
if (/{regex}/.test(str))
¿Parecen dar el mismo resultado?
Respuestas:
Primero, veamos qué hace cada función:
regexObject . prueba ( cadena )
Ejecuta la búsqueda de una coincidencia entre una expresión regular y una cadena especificada. Devuelve verdadero o falso .
cadena . partido ( RegExp )
Se usa para recuperar las coincidencias al hacer coincidir una cadena con una expresión regular. Devuelve una matriz con las coincidencias o
nullsi no hay ninguna.
Como se nullevalúa como false,
if ( string.match(regex) ) {
// There was a match.
} else {
// No match.
}
¿Hay alguna diferencia con respecto al rendimiento?
Sí . Encontré esta breve nota en el sitio de MDN :
Si necesita saber si una cadena coincide con una expresión regular regexp, use regexp.test (string).
¿Es significativa la diferencia?
¡La respuesta una vez más es SÍ ! Este jsPerf que reuní muestra que la diferencia es ~ 30% - ~ 60% dependiendo del navegador:

Úselo .testsi desea un cheque booleano más rápido. Use .matchpara recuperar todas las coincidencias cuando use la gbandera global.
.test(). :)
No olvides tener en cuenta la bandera global en tu expresión regular:
var reg = /abc/g;
!!'abcdefghi'.match(reg); // => true
!!'abcdefghi'.match(reg); // => true
reg.test('abcdefghi'); // => true
reg.test('abcdefghi'); // => false <=
Esto se debe a que Regexp realiza un seguimiento del último índice cuando se encuentra una nueva coincidencia.
.test()? ¿no es el punto de .test()verificar si la cadena tiene una expresión regular coincidente?
Este es mi resultado de referencia

prueba 4,267,740 operaciones / seg. ± 1.32% (60 corridas muestreadas)
ejecutivo 3,649,719 operaciones / seg. ± 2.51% (60 corridas muestreadas)
partido 3,623,125 operaciones / seg ± 1.85% (62 carreras muestreadas)
índice de 6.230.325 operaciones / seg. ± 0.95% (62 ejecuciones muestreadas)
El método de prueba es más rápido que el método de coincidencia, pero el método más rápido es el indexOf