Expresiones Regulares


Una Expresión Regular (regexp) es conocida también como patrón, es una expresión que describe un grupo de cadenas sin enumerar sus elementos. Usualmente representando otro grupo de caracteres mayor, de esta forma podemos comparar el patrón con otro conjunto de caracteres y observar sus concurrencias.





El dominio de las expresiones regulares pueden ser bastante difícil para el programador principiante, y como no se les necesita todo el tiempo, la sintaxis se puede volver complicada y hasta frustrante, por lo que la mayoría de las veces debemos usar una hoja de referencia para entender o recordar lo que queremos hacer.

Las expresiones regulares se encuentran en la mayoría de los lenguajes de programación, solo existen ciertos cambios "leves" en su uso y sintax.

En programación las expresiones regulares son un método donde se hace una búsqueda dentro de cadenas de caracteres, donde no se le da importancia si la búsqueda es de dos (02) caracteres en una cadena de 10 o si es necesario hallar todas las concurrencias de un patrón definido de caracteres en un archivo de miles de caracteres.

El patrón a emplear puede estar conformado por un conjunto de carácteres (números, letras, signos) o simplemente por meta caracteres (no se representan a ellos mismos per se, sino que son interpretados de una manera diferente) que representan otros carácteres, o permiten una búsqueda contextual.

Las expresiones regulares se construyen utilizando los operadores unión, concatenación.

- Alternación: Una barra vertical | separa las alternativas.
- Cuantificación: Un cuantificador tras un carácter especifica la frecuencia con la que éste puede ocurrir. Los cuantificadores más comunes son +, ? y *:
+ Indica que el carácter al que sigue debe aparecer al menos una vez.
? Indica que el carácter al que sigue puede aparecer como mucho una vez.
* Indica que el carácter que lo precede puede aparecer cero, una, o más veces.

- Agrupación: Los paréntesis pueden usarse para definir el ámbito y precedencia de los demás operadores.

Los constructores pueden combinarse libremente dentro de la misma expresión.

Meta caracteres de posicionamiento conocidos tambíen como anclas: ^ y $ sirven para indicar donde debe estar situado el patrón dentro de la cadena para establecer que hay una concurrencia.

Si usamos el ^ estamos indicando que el patrón debe aparecer al inicio de la cadena de carácteres comparada. Cuando empleamos el signo $ indicamos que el patrón debe aparecer al final del conjunto.

Suele ocurrir que necesitamos incluir en el patrón algún meta caracter como signo literal. Para hacer esto usamos el caracter de escape, la barra invertida \. Como regla: La barra invertida \ convierte en normales caracteres especiales, y hace especiales caracteres normales.

Si un metacaracter es un caracter que puede representar a otros, entonces el punto (.) es el meta caracter por excelencia. Un punto en el patrón representa cualquier caracter excepto nueva línea.

Explicación:
* equivale a {0,} (0 o mas veces)
+ equivale a {1,} (1 o mas veces)
? equivale a {0,1} (0 o 1 vez)

Referencia de expresiones regulares (extraída de php.net por mholdgate - wakefield dot co dot uk )
^ // Comienzo de la zadena
$ // Final de la cadena

n* // Cero o mas "n" (donde n es el carácter precedente)
n+ // Uno o mas "n"
n? // Un posible "n"

n{2} // Exactamente dos "n"
n{2,} // Al menos dos o mas "n"
n{2,4} // De dos a cuatro "n"

() // Parentesis para agrupar expresiones
(n|a) // o "n" o "a"

. // Cualquier carácter

[1-6] // un número entre 1 y 6
[c-h] // una letra en minuscula entre c y h
[D-M] // una letra en mayúscula entre D y M
[^a-z] // no hay letras en minuscula de a hasta z
[_a-zA-Z] // un guion bajo o cualquier letra del alfabeto

^.{2}[a-z]{1,2}_?[0-9]*([1-6]|[a-f])[^1-9]{2}a+$

/* Una cadena que comienza por dos carácteres cualquiera
Seguidos por una o dos letras (en minuscula)
Seguidos por un guion _ bajo opcional
Seguidos por cero o mas números
Seguidos por un numero del 1 al 6 o una letra de la -a- a la -f-
Seguidos por dos carácteres que no son números del 1 al 9
Seguidos de uno o mas carácteres al final de la cadena */

Ejemplo de uso en PHP

// Caracteres alfanúmericos solamente
'/^[a-zA-Z0-9]*$/'

//Caracteres alfanúmericos con espacios solamente
'/^[a-zA-Z0-9 ]*$/'

//caracteres alfabeticos solamente
'/^[a-zA-Z]*$/'

//fecha (MM/DD/YYYY)
'/^((0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2})*$/'

//Fecha (YYYY/MM/DD)
'#^((19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01]))*$#'

//Números solamente
'/^[0-9]*$/'

//Email
'/^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$/'

//Direcciones IP
'/^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))*$/'

//Letras en minúscula solamente
'/^([a-z])*$/'

//Password (Clave de acceso)
'/^(?=^.{6,}$)((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.*$/'

//Letras mayúsculas solamente
'/^([A-Z])*$/'

//URL
'/^(((http|https|ftp):\/\/)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]\/+=%&_\.~?\-]*))*$/'

Fuente a consultar:
http://es.wikipedia.org/wiki/Expresión_regular
http://www.virtuosimedia.com/dev/php/37-tested-php-perl-and-javascript-regular-expressions
http://www.regular-expressions.info/php.html
http://www.zytrax.com/tech/web/regex.htm

Expresiones regulares en:
PHP
http://ve2.php.net/manual/es/ref.pcre.php
Perl:
http://www.regular-expressions.info/perl.html
Python
http://www.regular-expressions.info/python.html
Javascript
http://www.regular-expressions.info/javascript.html
Ruby
http://www.regular-expressions.info/ruby.html

Safe Creative #1102068435639

Fuente:
http://www.awven.com



Otras noticias de interés:

Boletines de seguridad de #Microsoft en noviembre
Este martes Microsoft ha publicado cuatro boletines de seguridad (del MS11-083 al MS11-086) correspondientes a su ciclo habitual de actualizaciones. Según la propia clasificación de Microsoft uno de los boletines presenta un nivel de gravedad crít...
Desbordamiento de buffer en Winamp
Según informó SecurityFocus, se descubrió en Winamp de Nullsoft un problema de seguridad que posibilitaría a un atacante ejecutar código. Según SecurityFocus, Winamp es vulnerable a una condición de desbordamiento de buffer cuando comprueba la...
Vulnerabilidad en Safari
Se ha anunciado la existencia de una vulnerabilidad crítica en el navegador Safari incluido en los sistemas operativos Mac OS X, por la que atacantes maliciosos podrán lograr la ejecución automática de scripts cuando...
Fedora 14 disponible.
Efectivamente ya es el día para fedora 14 laughlin vea la luz… ...
¿Windows Vista no mejora la seguridad?
Traducción del artículo original de Mark Gibbs (Network World). El lector y corresponsal Phil Daley, desarrollador de software, me comentó que lleva ya tres semanas en un proyecto de un mes evaluando un producto propio sobre Windows Vista. El ...
Intel ha incrementado la frecuencia de reloj de su procesador estrella para PC d
Algún día los procesadores Pentium 4 de Intel tendrán que pasar a mejor vida. Puede que sea antes de lo que parece, porque la compañía ya está trabajando en el sucesor del chip. Intel está actualmente desarrollando un nuevo pro...
Firefox 11 con SPDY
SPDY es un protocolo de red desarrollado e introducido por Google a finales del año 2009 con el objetivo principal de mejorar nuestra experiencia al navegar en internet, imprimiendo mayor velocidad en la carga de páginas web. Si bien SPDY forma par...
Microsoft invita a hackear Windows Vista y exponer sus vulnerabilidades
Microsoft desafía a los participantes en el Congreso Black Hat a encontrar vulnerabilidades y agujeros de seguridad en Windows Vista. ...
Próximo curso PHP (Valencia - Carabobo) 30/01/2010
Esta pautado a realizarse un nuevo curso básico de PHP, en la ciudad de Valencia, Carabobo los días el día 30/01/10 y 31/01/10. El curso está estructurado para llevarlo a modo intensivo, y poder realizarlo en todo un fin de semana, de 8 am - 12 p...
Google alerta a sus usuarios sobre falso correo de Gmail
Ya no es una novedad la existencia de correos engañosos ( Phishing) que, mediante el uso del nombre de conocidas compañías, intentan robar datos confidenciales de los usuarios de internet....

Brindanos
un o una


Redes Sociales

Publicidad


Gana Bitcoins desde tu casa

Categorías


Planeta Vaslibre

Blog Roll




Nube de tags

  • anonimato
  • anonimo
  • antivirus
  • apache
  • blog
  • bsd
  • bug
  • centos
  • chrome
  • cifrado
  • computer
  • debian
  • exploits
  • expresiones
  • fedora
  • fice
  • firefox
  • forense
  • freebsd
  • gentoo
  • github
  • gnome
  • gnu
  • gpl
  • gtk
  • hack
  • hacking
  • hosting
  • informatica
  • internet
  • isos
  • libre
  • licencias
  • linux
  • linuxmint
  • lxde
  • micros
  • mint
  • mit
  • mozilla
  • mysql
  • noticia
  • opensource
  • pgp
  • php
  • regulares
  • sabayon
  • seguridad
  • system
  • tecnologia
  • thunar
  • thunderbird
  • tor
  • troyanos
  • tware
  • ubuntu
  • underground
  • vaslibre
  • virus
  • viserproject
  • vivaldi
  • vulnerabilidades
  • web
  • website
  • windows
  • xanadu
  • xfce
  • xombra