Muchas veces estoy usando la match
funció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?
javascript
regex
performance
gdoron está apoyando a Monica
fuente
fuente
Respuestas:
Uso básico
Primero, veamos qué hace cada función:
regexObject . prueba ( cadena )
cadena . partido ( RegExp )
Como se
null
evalúa comofalse
,Actuación
¿Hay alguna diferencia con respecto al rendimiento?
Sí . Encontré esta breve nota en el sitio de MDN :
¿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:
Conclusión
Úselo
.test
si desea un cheque booleano más rápido. Use.match
para recuperar todas las coincidencias cuando use lag
bandera global.fuente
.test()
. :)No olvides tener en cuenta la bandera global en tu expresión regular:
Esto se debe a que Regexp realiza un seguimiento del último índice cuando se encuentra una nueva coincidencia.
fuente
.test()
? ¿no es el punto de.test()
verificar si la cadena tiene una expresión regular coincidente?Este es mi resultado de referencia
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
fuente