Expresiones Regulares

Me tengo que recordar a mi mismo cada cierto tiempo que es mejor usar EXPRESIONES REGULARES que usar un buscar y reemplazar o que es mejor usar EXPRESIONES REGULARES para validar una dirección de correo, teléfono, dirección, etc. que preparar un algoritmo para comprobar las diversas casuísticas.

¿Por qué tiendo a olvidar esta forma de programar? Pues no lo se y a muchos compañeros de profesión cuando se lo pregunto o bien les pasa lo mismo que a mí o bien ni conocen esta herramienta.

Si deseas más información al respecto, dejo el siguiente enlace: Regular-Expresion.Info.

Y un ejemplo de código que demuestra su potencia:

1
2
3
4
5
6
7
8
//PHP -> La Fecha coincide con los formatos del tipo DD/MM/YYYY, DD-MM-YY,...
$date = "03/02/1977";
$p = "!^(\\d\\d)[-/](\\d\\d)[-/](\\d\\d(?:\\d\\d)?)$!";
if (preg_match($p,$date,$matches) {
  $month = $matches[1];
  $day = $matches[2];
  $year = $matches[3];
}
1
2
3
4
5
6
7
8
9
10
11
12
//C# -> Convertir <br> a <br /> para Compatibilidad XHTML
using System.Text.RegularExpressions;
class Test
{
  static void Main( )
  {
    string t = "Hello world. <br>";
    string f = "<br>";
    string r = "<br />";
    string result = Regex.Replace(t, f, r, RegexOptions.IgnoreCase) ;
  }
}

Y aquí algunas de las verificaciones más comunes:

Para direccions IP separadas por puntos: 
 
    /^(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4] \d|25[0-5])\.
    (\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])$/
 
Coincide: 127.0.0.1, 192.10.1.101
 
No Coincide: 127.1
Para direcciones HTTP:
 
    /(https?):\/\/([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)
    +[a-zA-Z]{2,9})(:\d{1,4})?([-\w\/#~:.?+=&%@~]*)/
 
Coincide: https://jmfloreszazo.com, http://localhot.com:8080/test.html
 
No Coincide: ftp:/jmfloreszazo.com, ftp://jmfloreszazo.com/

A ver si de una vez por todas no olvido pensar en esto antes de ir por el camino fácil.

Tags: ,

No comments yet.

Deja un comentario