Eso podría reducirse a /0x[\da-f]/i, pero de lo contrario, +1.
Niklas B.
20
@NiklasB. Su taquigrafía solo es válida si usa perl regex, si usa POSIX regex, entonces la solución de Steven es la más corta. De cualquier manera, la solución de Steven funciona tanto para perl como para expresiones regulares POSIX.
David M. Syzdek
¡Entendido! La solución de Steven es buena si el número hexadecimal comienza con 0x o 0X. Este debería funcionar mejor: ^ [0-9A-F] + $ También puede reconocer patrones hexadecimales como: '535GH0G73' Para Java, podemos usar, por ejemplo, String.matches () para verificar esto .. Gracias a todos por la respuesta :)
saurcery
2
'0x [\ da-f] {2}' probablemente es mejor para limitar el número también
Yazan Rawashdeh
2
¿Coincidiría con los números de ejemplo segundo y tercero, 0acdadecf822eeff32aca5830e438cb54aa722e3 y 8BADF00D?
Peter Mortensen
44
La sintaxis exacta depende de sus requisitos exactos y del lenguaje de programación, pero básicamente:
/[0-9a-fA-F]+/
o más simplemente, ino distingue entre mayúsculas y minúsculas.
/[0-9a-f]+/i
Si tiene la suerte de utilizar Ruby, puede hacer:
/\h+/
EDITAR : la respuesta de Steven Schroeder me hizo darme cuenta de que mi comprensión del bit 0x era incorrecta, así que actualicé mis sugerencias en consecuencia. Si también desea hacer coincidir 0x, los equivalentes son
/0[xX][0-9a-fA-F]+//0x[0-9a-f]+/i
/0x[\h]+/i
AÑADIDO MÁS : si 0x debe ser opcional (como implica la pregunta):
@noobDroid ¿Qué te gustaría que te explique específicamente?
SimonMayer
18
No es gran cosa, pero la mayoría de los motores de expresiones regulares admiten las clases de caracteres POSIX, y hay [:xdigit:]caracteres hexadecimales coincidentes, que es más simple que el común0-9a-fA-F .
Entonces, la expresión regular solicitada (es decir, con opcional 0x) es:/(0x)?[[:xdigit:]]+/
Si está buscando un carácter hexadecimal específico en el medio de la cadena, puede usar "\ xhh" donde hh es el carácter en hexadecimal. Lo he intentado y funciona. Utilizo framework para C ++ Qt pero puede resolver problemas en otros casos, depende del sabor que necesites usar (php, javascript, python, golang, etc.).
¡Oye! Si bien esto puede ser cierto para perl, no parece ser el caso de las expresiones regulares en todos los lenguajes de programación. Según esto\x es el equivalente a \uen otros idiomas.
Maurice
¿Qué es "anda específica"?
Peter Mortensen
0
Este asegura que no tenga más de tres pares válidos:
(([a-fA-F]|[0-9]){2}){3}
Más o menos de tres pares de caracteres válidos no coinciden.
Otro ejemplo: los valores hexadecimales para colores css comienzan con un signo de almohadilla o almohadilla (#), luego seis caracteres que pueden ser un número o una letra entre A y F, inclusive.
Respuestas:
¿Qué tal lo siguiente?
Coincide con la expresión que comienza con 0, seguida de una x minúscula o mayúscula, seguida de uno o más caracteres en los rangos 0-9, o af, o AF
fuente
/0x[\da-f]/i
, pero de lo contrario, +1.La sintaxis exacta depende de sus requisitos exactos y del lenguaje de programación, pero básicamente:
o más simplemente,
i
no distingue entre mayúsculas y minúsculas.Si tiene la suerte de utilizar Ruby, puede hacer:
EDITAR : la respuesta de Steven Schroeder me hizo darme cuenta de que mi comprensión del bit 0x era incorrecta, así que actualicé mis sugerencias en consecuencia. Si también desea hacer coincidir 0x, los equivalentes son
AÑADIDO MÁS : si 0x debe ser opcional (como implica la pregunta):
fuente
No es gran cosa, pero la mayoría de los motores de expresiones regulares admiten las clases de caracteres POSIX, y hay
[:xdigit:]
caracteres hexadecimales coincidentes, que es más simple que el común0-9a-fA-F
.Entonces, la expresión regular solicitada (es decir, con opcional
0x
) es:/(0x)?[[:xdigit:]]+/
fuente
Esto coincidirá con o sin
0x
prefijo(?:0[xX])?[0-9a-fA-F]+
fuente
Cabe mencionar que la detección de un MD5 (que es uno de los ejemplos) se puede hacer con:
fuente
Si usa Perl o PHP, puede reemplazar
con:
fuente
Solo para el registro, especificaría lo siguiente:
Lo cual se diferencia en que comprueba que tiene que contener los seis caracteres válidos y en x minúscula o mayúscula en caso de que tengamos uno.
fuente
Si está buscando un carácter hexadecimal específico en el medio de la cadena, puede usar "\ xhh" donde hh es el carácter en hexadecimal. Lo he intentado y funciona. Utilizo framework para C ++ Qt pero puede resolver problemas en otros casos, depende del sabor que necesites usar (php, javascript, python, golang, etc.).
Esta respuesta fue tomada de: http://ult-tex.net/info/perl/
fuente
\x
es el equivalente a\u
en otros idiomas.Este asegura que no tenga más de tres pares válidos:
Más o menos de tres pares de caracteres válidos no coinciden.
fuente
En caso de que necesite esto dentro de una entrada donde el usuario puede escribir
0
y0x
también, pero no un número hexadecimal sin el0x
prefijo:fuente
Otro ejemplo: los valores hexadecimales para colores css comienzan con un signo de almohadilla o almohadilla (#), luego seis caracteres que pueden ser un número o una letra entre A y F, inclusive.
fuente