2011-09-30 13 views
6

Duplicar posible:
typeof for RegExp¿Cómo saber si un objeto es un objeto RegExp?

tengo una rutina que está poniendo a prueba para ver si un objeto se dan criterios partidos.

testForMatch(objectToTest, matchCriteria) { 
    // all my testing logic here. 
} 

El parámetro matchCriteria es un objeto que podría tener este aspecto, por ejemplo:

{ 
    'size'  : "large", 
    'color' : /(blue|red)/ 
} 

Este matchCriteria en el ejemplo anterior se utilizará para probar si objectToTest tiene un atributo size con valor "large", y un atributo color con valor de "blue" o "red".

Por lo tanto, matchCriteria tiene nombres de propiedades/atributos que se buscarán en objectToTest con el objetivo de hacer coincidir los valores de las propiedades. O bien, si se da una expresión regular como el valor (como en el caso del color anterior), la propiedad en objectToTest será RegExp.test() 'ed contra la expresión regular dada.

Pero con el fin de tratar el matchCriteria adecuadamente en testForMatch(), tengo que ser capaz de decir si el valor de un atributo en matchCriteria es una cadena o un objeto RegExp.

Mi pregunta es, ¿cómo puedo detectar si el valor de un atributo es un objeto RegExp?

+1

http://stackoverflow.com/questions/4339288/typeof-for-regexp – mithunsatheesh

+0

@mithunsatheesh, gracias! –

Respuesta

9

¿qué tal

var o = { 
    'size'  : "large", 
    'color' : /(blue|red)/ 
} 

print (o['color'] instanceof RegExp) 

>>true 
+0

¡Ah! Sí. Gracias. Aceptaré cuando el temporizador me lo permita. –

Cuestiones relacionadas