regex - pasteles - tabla de colores html pdf
Cómo identificar una cadena dada es el formato de color hexadecimal (7)
Rubí
En Ruby, tienes acceso a la clase de caracteres /h
(hexadecimal). También debe tener más cuidado con los finales de línea, por lo tanto, /A.../z
lugar de los más comunes ^...$
//A#(/h{3}){1,2}/z/
Esto coincidirá con 3 o 6 caracteres hexadecimales después de un #. Así que no hay RGBA. También es insensible a mayúsculas y minúsculas, a pesar de no tener la bandera i
.
Estoy buscando una expresión regular para validar los colores hexadecimales en ASP.NET C # y
También estoy buscando código para la validación en el lado del servidor.
Por ejemplo: #CCCCCC
Basado en la respuesta de MSalters, pero previniendo una coincidencia incorrecta, los siguientes trabajos
^#(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$
O para un símbolo #
hash opcional:
^#?(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$
Y sin que se generen referencias posteriores:
^#?(?:(?:[0-9a-fA-F]{2}){3}|(?:[0-9a-fA-F]){3})$
Esto debería coincidir con cualquier #rgb
, #rgba
, #rrggbb
y #rrggbbaa
:
/^#(?:(?:[/da-f]{3}){1,2}|(?:[/da-f]{4}){1,2})$/i
Descompostura:
^ // start of line
# // literal pound sign, followed by
(?: // either:
(?: // a non-capturing group of:
[/da-f]{3} // exactly 3 of: a single digit or a letter ''a''–''f''
){1,2} // repeated exactly 1 or 2 times
| // or:
(?: // a non-capturing group of:
[/da-f]{4} // exactly 4 of: a single digit or a letter ''a''–''f''
){1,2} // repeated exactly 1 or 2 times
)
$ // end of line
i // ignore case (let ''A''–''F'' match ''a''–''f'')
Tenga en cuenta que lo anterior no es equivalente a esta sintaxis, que es incorrecta:
/^#(?:[/da-f]{3,4}){1,2}$/i
Esto permitiría un grupo de 3 seguido de un grupo de 4, como #1234567
, que no es un color hexadecimal válido.
Esto si desea aceptar colores con nombre y rgb (a, b, c) también. La "i" final es para mayúsculas y minúsculas.
Colores HTML (# 123, no se acepta rgb)
/^(#[a-f0-9]{6}|black|green|silver|gray|olive|white|yellow|maroon|navy|red|blue|purple|teal|fuchsia|aqua)$/i
Colores CSS (# 123, rgb aceptado)
/^(#[a-f0-9]{6}|#[a-f0-9]{3}|rgb */( *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? */)|rgba */( *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? */)|black|green|silver|gray|olive|white|yellow|maroon|navy|red|blue|purple|teal|fuchsia|aqua)$/i
Menor desacuerdo con la otra solución. Yo diría que
^#(([0-9a-fA-F]{2}){3}|([0-9a-fA-F]){3})$
La razón es que esto (correctamente) captura los componentes RGB individuales. La otra expresión rompió # 112233 en tres partes, ''#'' 112 233. La sintaxis es en realidad ''#'' (RR GG BB) | (RGB)
La ligera desventaja es que se requiere más retroceso. Al analizar #CCC, no sabes que la segunda C es el componente verde hasta que llegas al final de la cadena; cuando analiza #CCCCCC, no sabe que la segunda C sigue siendo parte del componente rojo hasta que vea la 4ta C.
Todas las respuestas mencionan el formato RGB, aquí hay expresiones regulares para el formato ARGB:
^#[0-9a-fA-F]{8}$|#[0-9a-fA-F]{6}$|#[0-9a-fA-F]{4}$|#[0-9a-fA-F]{3}$
^#(?:[0-9a-fA-F]{3}){1,2}$
Disección:
^ anchor for start of string
# the literal #
( start of group
?: indicate a non-capturing group that doesn''t generate backreferences
[0-9a-fA-F] hexadecimal digit
{3} three times
) end of group
{1,2} repeat either once or twice
$ anchor for end of string
Esto coincidirá con un valor de color hexadecimal arbitrario que se puede usar en CSS, como #91bf4a
o #f13
.
Nota: Sin embargo, no hay soporte para los valores de color hex RGBA.