2012-03-13 14 views
13

Bien, estoy bastante nuevo en expresiones regulares y en particular sobre js expresión regularRegexp Coincidencia de color hexadecimal de sintaxis (y acortar la forma)

Busco hacer una expresión regular que coincide con el color hexadecimal de sintaxis (como "# 34ffa6") entonces me dio un ojo en la página w3school: Javascript RegExp Object

entonces esa es mi expresión regular: /^ # [0-9a-f] {6}/i

parece que funciona pero, si quiero que coincida también con la forma "breve sintaxis de color hexadecimal"? (como "# 3fa"), es posible? He intentado usar el caracter |, pero tal vez me equivoque con la sintaxis ...

Thx de antemano y lo siento por la mala seguramente Inglés (soy italiano ...)

Respuesta

48
/^#[0-9a-f]{3,6}$/i 

se correspondería con #abc, #abcd, #abcde, #abcdef

/^#([0-9a-f]{3}|[0-9a-f]{6})$/i 

se correspondería con #abc y #abcdef pero no #abcd

/^#([0-9a-f]{3}){1,2}$/i 

coincidiría #abc y #abcdef pero no #abcd

/^#(?:[0-9a-f]{3}){1,2}$/i 

habría Matc h #abc y #abcdef pero no #abcd

Echa un vistazo a RegExp - MDN para obtener más información sobre las expresiones regulares en javascript.

+0

1, estaba a punto de publicar la final de sus ejemplos. Sin embargo, cambiaría a paréntesis que no capturan '(? :)'. –

+0

@AndyE ¿Aumenta el rendimiento la no captura? ¡o simplemente un placer! – ManseUK

+0

a la derecha, agregó el grupo sin captura, ¡gracias! – rodneyrehm

3

Prueba esto:

/^#([0-9a-f]{6}|[0-9a-f]{3})$/i 

[0-9a-f]{6} = 6 caracteres [0-9a-f]{3} = 3 caracteres $ = extremo

1

esto debería funcionar /#[0-9a-f]{6}|#[0-9a-f]{3}/gi

y para probar expresiones regulares sobre la marcha y el aprendizaje se puede utilizar este sitio http://gskinner.com/RegExr/

+0

thx, lo intentaré! :RE – cl0udw4lk3r

Cuestiones relacionadas