/ / Construir padrão regex não corresponde a uma entrada inválida fornecida em java - java, regex

Construir padrão de regex não corresponde a determinada entrada inválida em java - java, regex

Estou construindo um padrão regex para identificadores do Android. Os identificadores do Android devem estar no seguinte formato como,

<8 character alphaNumeric>-<4 character alphaNumeric>-<4 character alphaNumeric>-<12 character alphaNumeric>

O ID do android de amostra é,

5f302bf7-97ad-4c24-86f5-823f881d954e

Então, para combinar com o formato acima, meu padrão regex se parece,

"^([A-Fa-f0-9]{8}\" + "-[A-Fa-f0-9]{4}\" + "-[A-Fa-f0-9]{4}\"

Se eu dei um Android inválido, identifico como,

00000000-0000-0000-0000-000000000000

que também corresponde ao padrão regex acima.

Como construir um padrão regex que não corresponde aos identificadores inválidos acima?

Respostas:

0 para resposta № 1

Se entendi sua pergunta corretamente, você deseja validar um identificador com as seguintes regras

  • Deve permitir apenas caracteres hexadecimais (0-9, a-f e A-F)
  • Ele deve ter 28 caracteres e estar separado por traços (-) e da estrutura {8 caracteres} - {4 caracteres} - {4 caracteres} - {12 caracteres}

Regex: ^[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}$

Regex101 Demo

Fósforos:

FF000000-0000-0000-0000ABCDEF0A
00000000-0000-0000-000000000000

Rejeita:

00000000-0000-0000-0000-000000000000
00000000 0000 0000 0000 000000000000
00000000000000000000000000000000
00000000-0000-0000-00000000000G