VerbalExpressions: la forma fácil de trabajar con expresiones regulares

Dentro del mundo de la programación, las expresiones regulares son uno de los elementos que solemos utilizar los desarrolladores para realizar validaciones y comprobar si algún valor determinado cumple un patrón predefinido. Si bien son muy potentes, el mayor problema que tienen las expresiones regulares son su extrema complejidad para poder diseñarlas correctamente y que, además, cada lenguaje de programación tiene sus propias reglas, aunque existen muchas similitudes en las distintas sintaxis.

Y precisamente este es el mayor problema de las expresiones regulares: su complejidad a la hora de diseñarlas hace que muchos desarrolladores descarten su uso ya que, a pesar de que conocen su potencial, no están seguros de si la expresión regular que han diseñado realmente satisface al 100% las necesidades que intenta cumplir.

Una expresión regular bien definida es muy útil para comprobar que los valores con los que estamos trabajando son correctos. Algunos de los ejemplos más usados son los que nos permiten verificar si es correcta una dirección de email o una URL que haya introducido un usuario en un formulario.

Así, la expresión regular de una dirección de correo electrónico podría ser esta:

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

Como podemos ver, se trata de una conjunto de números, letras y símbolos aparentemente sin sentido. Pues bien, para facilitarnos el uso de expresiones regulares y evitarnos bastantes quebraderos de cabeza han surgido las expresiones verbales. No es ni más ni menos que una librería que permite generar una expresión regular usando un lenguaje más natural.

Usando expresiones verbales podremos, por ejemplo, validar una URL de esta forma:

var tester = VerEx()              .startOfLine()             .then( "http" )             .maybe( "s" )             .then( "://" )             .maybe( "www." )             .anythingBut( " " )             .endOfLine();

Ahora podremos usar este código bien para usarlo como validador de expresiones regulares por sí mismo, o bien para generar la expresión regular resultante.

// Así podemos comprobar si se cumple la expresión regular... if($regex->test("http://www.laurlquequeramosvalidar.com")){ ... }  // Y así generamos la expresión regular $regex->getRegex(); 

 Como podemos ver, aunque en el resultado final obtenido tiene una mayor complejidad computacional, tenemos una una expresión mucho más fácil de leer y entender y, sobre todo, más fácil de modificar y adaptar a nuestras necesidades en un futuro mantenimiento.


La biblioteca de Expresiones Verbales se encuentra disponible en GitHub. Aquí tenéis disponible la versión para PHP, C#, Java y Python, aunque existen implementaciones para más lenguajes de programación:

PHP
https://github.com/VerbalExpressions/PHPVerbalExpressions

C#
https://github.com/VerbalExpressions/CSharpVerbalExpressions

Python
https://github.com/VerbalExpressions/PythonVerbalExpressions

Java
https://github.com/VerbalExpressions/JavaVerbalExpressions

Soy José Antonio Sánchez, ingeniero de software de Premium Servicios Integrados, y espero que este recurso te haya resultado útil.

Sobre el autor

José Antonio Sánchez

Ingeniero de software

@JoseAPremium