Isso poderia ser reduzido para /0x[\da-f]/i, mas caso contrário, +1.
Niklas B.
20
@NiklasB. Sua abreviação só é válida se estiver usando perl regex, se estiver usando POSIX regex, então a solução de Steven é a mais curta. De qualquer forma, a solução de Steven funciona para perl e POSIX regex.
David M. Syzdek
Entendi! A solução de Steven é boa se o número hexadecimal começar com 0x ou 0X. Este deve funcionar melhor: ^ [0-9A-F] + $ Ele também pode reconhecer padrões hexadecimais como: '535GH0G73' Para Java, podemos usar, por exemplo, String.matches () para verificar isso .. Obrigado pessoal pela resposta :)
saurcery de
2
'0x [\ da-f] {2}' parece melhor para limitar o número também
Yazan Rawashdeh
2
Isso corresponderia ao segundo e terceiro números de exemplo, 0acdadecf822eeff32aca5830e438cb54aa722e3 e 8BADF00D?
Peter Mortensen
43
A sintaxe exata depende de seus requisitos exatos e linguagem de programação, mas basicamente:
/[0-9a-fA-F]+/
ou, mais simplesmente, itorna não diferencia maiúsculas de minúsculas.
/[0-9a-f]+/i
Se você tiver sorte o suficiente para usar Ruby, pode fazer:
/\h+/
EDITAR - A resposta de Steven Schroeder me fez perceber que meu entendimento sobre o bit 0x estava errado, então atualizei minhas sugestões de acordo. Se você também quiser corresponder a 0x, os equivalentes são
/0[xX][0-9a-fA-F]+//0x[0-9a-f]+/i
/0x[\h]+/i
ADICIONADO MAIS - Se 0x precisar ser opcional (como a pergunta sugere):
@noobDroid O que especificamente você gostaria que eu explicasse?
SimonMayer
18
Não é grande coisa, mas a maioria dos motores regex suporta as classes de caracteres POSIX, e há [:xdigit:]para correspondência de caracteres hexadecimais, que é mais simples do que as 0-9a-fA-Fcoisas comuns .
Portanto, o regex conforme solicitado (ou seja, com opcional 0x) é:/(0x)?[[:xdigit:]]+/
Se estiver procurando por um caractere hexadecimal específico no meio da string, você pode usar "\ xhh", onde hh é o caractere em hexadecimal. Eu tentei e funciona. Eu uso o framework para C ++ Qt mas pode resolver problemas em outros casos, depende do tipo que você precisa usar (php, javascript, python, golang, etc.).
Ei! Embora isso possa ser verdade para perl, não parece ser o caso para Expressões regulares em todas as linguagens de programação. De acordo com isso\x é o equivalente a \uem outras línguas.
Maurice
O que é "especific anda"?
Peter Mortensen,
0
Este garante que você não tenha mais do que três pares válidos:
(([a-fA-F]|[0-9]){2}){3}
Qualquer mais ou menos do que três pares de caracteres válidos não coincidem.
Outro exemplo: os valores hexadecimais para cores css começam com um sinal de sustenido ou hash (#), depois seis caracteres que podem ser um numeral ou uma letra entre A e F, inclusive.
Respostas:
Que tal o seguinte?
Corresponde à expressão começando com 0, seguido por um x inferior ou maiúsculo, seguido por um ou mais caracteres nos intervalos de 0-9, ou af, ou AF
fonte
/0x[\da-f]/i
, mas caso contrário, +1.A sintaxe exata depende de seus requisitos exatos e linguagem de programação, mas basicamente:
ou, mais simplesmente,
i
torna não diferencia maiúsculas de minúsculas.Se você tiver sorte o suficiente para usar Ruby, pode fazer:
EDITAR - A resposta de Steven Schroeder me fez perceber que meu entendimento sobre o bit 0x estava errado, então atualizei minhas sugestões de acordo. Se você também quiser corresponder a 0x, os equivalentes são
ADICIONADO MAIS - Se 0x precisar ser opcional (como a pergunta sugere):
fonte
Não é grande coisa, mas a maioria dos motores regex suporta as classes de caracteres POSIX, e há
[:xdigit:]
para correspondência de caracteres hexadecimais, que é mais simples do que as0-9a-fA-F
coisas comuns .Portanto, o regex conforme solicitado (ou seja, com opcional
0x
) é:/(0x)?[[:xdigit:]]+/
fonte
Irá corresponder com ou sem
0x
prefixo(?:0[xX])?[0-9a-fA-F]+
fonte
Vale ressaltar que a detecção de um MD5 (que é um dos exemplos) pode ser feita com:
fonte
Se você estiver usando Perl ou PHP, você pode substituir
com:
fonte
Apenas para registro, eu especificaria o seguinte:
O que difere por verificar que deve conter os seis caracteres válidos e em x minúsculo ou maiúsculo no caso de termos um.
fonte
Se estiver procurando por um caractere hexadecimal específico no meio da string, você pode usar "\ xhh", onde hh é o caractere em hexadecimal. Eu tentei e funciona. Eu uso o framework para C ++ Qt mas pode resolver problemas em outros casos, depende do tipo que você precisa usar (php, javascript, python, golang, etc.).
Esta resposta foi retirada de: http://ult-tex.net/info/perl/
fonte
\x
é o equivalente a\u
em outras línguas.Este garante que você não tenha mais do que três pares válidos:
Qualquer mais ou menos do que três pares de caracteres válidos não coincidem.
fonte
Caso você precise disso em uma entrada onde o usuário pode digitar
0
e0x
também, mas não um número hexadecimal sem o0x
prefixo:fonte
Outro exemplo: os valores hexadecimais para cores css começam com um sinal de sustenido ou hash (#), depois seis caracteres que podem ser um numeral ou uma letra entre A e F, inclusive.
fonte