5 expresiones regulares útiles para desarrollo web

Aunque a algunos nos gustan bastante las expresiones regulares, no está mal ofrecer una lista de alguna de ellas que nos pueden ser útiles cuando desarrollamos aplicaciones web.

  • Usuario: está es sencilla, letras, dígitos y el subrayado, con una longitud entre 3 y 16 caracteres.
/^[a-zA-Z0-9_]{3,16}$/
  • Etiquetas XHTML: habrá que sustituir la palabra etiqueta por la correspondiente que queremos buscar.
/]*>(.*?)<\/etiqueta>/
  • Etiqueta con atributos: lo mismo que la anterior pero con atributos.
/]*atributo\s*=\s*(["'])valor\\1[^>]*>(.*?)<\/etiqueta>/
  • Direcciones de correo: según la especificación RFC 822:
function is_valid_email_address($email){
$qtext = '[^\x0d\x22\x5c\x80-\xff]';
$dtext = '[^\x0d\x5b-\x5d\x80-\xff]';
$atom = '[^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c'.
'\x3e\x40\x5b-\x5d\x7f-\xff]+';
$quoted_pair = '\x5c[\x00-\x7f]';
$domain_literal = "\x5b($dtext|$quoted_pair)*\x5d";
$quoted_string = "\x22($qtext|$quoted_pair)*\x22";
$domain_ref = $atom;
$sub_domain = "($domain_ref|$domain_literal)";
$word = "($atom|$quoted_string)";
$domain = "$sub_domain(\x2e$sub_domain)*";
$local_part = "$word(\x2e$word)*";
$addr_spec = "$local_part\x40$domain";
return preg_match("!^$addr_spec$!", $email) ? 1 : 0;
}
  • URL: para reconocer direcciones de internet:
{
\b
# Parte principal (protocolo://dominio, o solo dominio)
(
# http://, o https://
(https?)://[-\w]+(\.\w[-\w]*)+
|
# Nombre de dominio
(?i: [a-z0-9] (?:[-a-z0-9]*[a-z0-9])? \. )+ # subdominions
# .com, .net...
(?-i: com\b
| edu\b
| biz\b
| gov\b
| in(?:t|fo)\b # .int or .info
| mil\b
| net\b
| org\b
| [a-z][a-z]\.[a-z][a-z]\b # two-letter country code
)
)
# Puerto
( : \d+ )?
# El resto es opcional que empieza por /
(
/
[^.!,?;"\'<>()[]{}sx7F-\xFF]*
(
[.!,?]+ [^.!,?;”\’<>()\[\]{\}s\x7F-\xFF]+
)*
)?
}ix

5 Regular Expressions Every Web Programmer Should Know

Vía / dzone

MySQLToolKit: utilidades MySQL para la línea de comandos

MySQLToolKit es una serie de utilidades de línea de comandos esenciales para MySQL. Totalmente independientes, no se necesita ninguna aplicación externa, ni ser instalados, solo es necesario ejecutarlos.

Entre las utilidades que ofrece, nos encontramos con:

  • Table Checksum: comprueba si existen los mismos datos en dos tablas. La única forma de comprobar si las tablas esclavas están sincronizadas.
  • Table Sync: ofrece dos algoritmos que aseguran sincronización entre tablas aunque no estén en el mismo servidor.
  • Query Profiler: analiza querys normales, en batch, aplicaciones externas y comandos. Recopila datos de diversas fuentes para mostrar un informe de resultados con sentido.
  • Archiver: almacena filas de una tabla en otra tabla o en un fihero.
  • Deadlock Logger: recupera datos del último deadlock InnoDB y lo almacena en un fichero o en una tabla.
  • Duplicate Key Checker: encuentra índices o claves foráneas que estén total o parcialmente duplicadas.
  • Show Grants: te ayuda a extraer, comparar, cambiar, sincronizar y llevar una control de versiones de los privilegios de los usuarios.
  • Slave Restart: monitoriza la replicación de los esclavos por si ha habido error y si es así los reinicia.

MySQLToolKit

Vía / Xaprb

links for 2007-07-23