Tengo la necesidad de verificar si las cadenas se adhieren a un formato de ID particular.¿Puedo acortar esta expresión regular?
El formato de la ID es el siguiente:
aBcDe-fghIj-KLmno-pQRsT-uVWxy
una secuencia de cinco bloques de cinco letras mayúsculas o minúsculas, separados por un guión.
que tienen la siguiente expresión regular que funciona:
string idFormat = "[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}";
Tenga en cuenta que no hay una pizca de salida, pero la totalidad de los bloques dentro del ID siguen el mismo formato. Por lo tanto, me gustaría poder representar esta secuencia de cuatro bloques con un trazo final dentro de la expresión regular y evitar la duplicación.
He intentado lo siguiente, pero no funciona:
string idFormat = "[[a-zA-Z]{5}[-]{1}]{4}[a-zA-Z]{5}";
¿Cómo acortar esta expresión regular y deshacerse de las partes duplicadas?
¿Cuál es la mejor manera de asegurarse de que cada bloque no contenga ningún número?
Editar:
Gracias por las respuestas, ahora entiendo la agrupación en las expresiones regulares.
estoy corriendo algunas pruebas en contra de la expresión regular, aplican los siguientes objetivos:
Prueba 1: aBcDe-fghIj-KLmno-pQRsT-uVWxy
Prueba 2: abcde-fghij-klmno-pqrst-uvwxy
Con la siguiente expresión regular, pasan ambas pruebas:
^([a-zA-Z]{5}-){4}[a-zA-Z]{5}$
Con la siguiente expresión regular, prueba de falla 1:
^([a-z]{5}-){4}[a-z]{5}$
Varias respuestas han dicho que está bien omitir la A-Z cuando se utiliza a-z, pero en este caso no parece estar funcionando.
Revise la publicación editada, tengo problemas para que la expresión regular funcione solo con a-z en lugar de a-zA-Z – fletcher
@fletcher: debe * especificar * que la expresión regular debe ser insensible a las mayúsculas y minúsculas. cómo lo haces depende de en qué idioma estés haciendo esto. En javascript, es con 'i' como en mi ejemplo, en C# es' nuevo Regex (patrón, RegexOptions.IgnoreCase); 'También hay casos donde * no * puede hacer que no distinga entre mayúsculas y minúsculas, como los controles ASP.NET RegexValidator, que no implementan compatibilidad con RegexOptions, y posiblemente algunos lenguajes de programación que podrían no ser compatibles. –
Problema resuelto. Gracias David – fletcher