Expresión regular para un mayor número hexadecimal de 10 y debe ser la misma longitud

Rohit Pathak:

¿Cómo se crea una expresión regular que detecta los números hexadecimales que tienen una longitud que cumpla los siguientes requisitos: incluso, mayor que o igual a 10, y menos de 256.

Por ejemplo:

0x1234567890 Accepted
0x123456789 rejected
123456789 rejected
1234567890 accepted
12345678901 rejected
0x123456789012 accepted
123456789012 accepted

La expresión regular:

^(0?[xX]?([^0-9a-fA-F]*(([0-9a-fA-F][0-9a-fA-F])+[^0-9a-fA-F]*)*))$

He tratado de la expresión regular anterior, pero que no está funcionando como se espera, es la comprobación de longitud, incluso aunque no comprobando que si la entrada es mayor que o iguales a 10 o no.

aquí 0x o 0X es opcional .. excluye que la longitud debe ser mayor o igual a 10

Wiktor Stribiżav:

Puedes utilizar

^(?=.{10,255}$)(?:0x)?[0-9a-fA-F]{2}(?:[0-9a-fA-F]{2})*$

Vea la demostración de expresiones regulares . Tenga en cuenta que en Java, puede reemplazar [0-9a-fA-F]con \p{XDigit}.

detalles

  • ^- inicio de la cadena (en implícita matches)
  • (?=.{10,255}$)- de 10 a 255 caracteres deben estar al final de la cadena (en este caso, el $es obligatoria)
  • (?:0x)?- un opcional 0xsecuencia Char
  • [0-9a-fA-F]{2} - dos caracteres hexadecimales
  • (?:[0-9a-fA-F]{2})* - 0 o más secuencias de caracteres dobles hexagonales
  • $- final de la cadena (en implícita matches)

En Java, es posible utilizarlo como

str.matches("(?=.{10,255}$)(?:0x)?[0-9a-fA-F]{2}(?:[0-9a-fA-F]{2})*")

O

str.matches("(?=.{10,255}$)(?:0x)?\\p{XDigit}{2}(?:\\p{XDigit}{2})*")

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=332422&siteId=1
Recomendado
Clasificación