Tip al validar un campo es alfanumérico

Una mejor solución a la validación de alfanumérico y mantener la integridad de los datos

hace un año   •   2 min de lectura

Por Andrés Tuñón
yo con la realidad bien alterada

La semana pasada había trabajado una funcionalidad, en la que debía validar si un string está en un idioma fuera del español y el inglés.

Todos estos años había aplicado una expresión regular como la siguiente:

[^A-Za-z0-9ÑñÁáÉéÍíÓóÚúÄäËëÏïÖöÜü\s\.\,\;\(\)\^\$\*\+\?\[\]\{\}\|\-]+

[^ ... ]+ significa que hará match contra toda palabra fuera de los rangos que coloque dentro de los corchetes.

Es decir considero lo que está en el abecedario, las tildes, dieresis, caracteres especiales; pero el Product Owner al revisar encuentra el posible caso de un nombre con &.

Lo primero que pensé fue en incluirlo a la expresión regular; pero esta vez traté de pensar 'out of the box' y finalmente aprendí una nueva solución:

[^\p{IsBasicLatin}\p{IsLatin-1Supplement}\p{IsLatinExtended-A}\p{IsLatinExtended-B}]+

\p{IsBasicLatin} es un bloque Unicode que tiene el rango del abecedario para este caso. Obviamente el resto de bloques que muestro son las extensiones que busco, los pueden ver a continuación:

Bloques para latin script
Bloques para latin script

La forma como estoy colocando los bloques es específico para dotnet, si deseas encontrar la solución para tu tecnología, te recomiendo ver las referencias.

Referencias

Regex Tutorial - Unicode Characters and Properties
Unicode block - Wikipedia

Corre la voz

Sigue leyendo