La idea es poder manipular cadenas para hace cosas como por ejemplo modificar una cadena para convertirla en una URL amigable, evitar el uso de ciertos parametros en etiquetas HTML, validar correos y mil y un aplicaciones mas.
Por ejemplo si quisieramos validar un correo electronico:

1
2
3
4
$email="mio@mail.com"
$pattern = "^([A-Za-z0-9\.|-|_]{1,60})([@])";
$pattern .="([A-Za-z0-9\.|-|_]{1,60})(\.)([A-Za-z]{2,3})$";
ereg($pattern,$email)

El ejemplo anterior comprueba que solo se permita una arroba, que hay al menos dos letras en la extension del dominio, solo permite numeros, letras, guiones y subguiones ademas de una longitud minima de 6 caracteres.
Para eso se usa la funcion ereg() de php, los parametros mas usados son:

Tipo de Operador Ejemplo Descripción
Caracteres literales

Localización de un carácter concreto

a A y 6 % @ Letras, digitos y cualquier carácter especial
\$ \^ \+ \\ \? Precede un caracter especial con el signo \ para cancelar su significado
\n \t \r Nueva linea, tabulación y retorno de carro
\cJ \cG Códigos de control
\xa3 Códigos hexadecimales
Delimitadores ^ Empieza con
$ Termina con
Grupo de carácteres [aAeEiou] cualquier carácter incluído en [ ]
[^aAeEiou] cualquier carácter excepto aAeEiou
[a-fA-F0-9] cualquier carácter hexadecimal (‘0’ a ‘9’ o ‘a’ a ‘f’)
. cualquier carácter
[[:space:]] cualquier espacio (espacio \n \r o \t)
[[:alpha:]] cualquier letra
[[:digit:]] cualquier digito
[^[:space:]] cualquier carácter que no sea un espacio
Agrupaciones aplicadas a elementos + 1 o mas (”algunos”)
* 0 o mas (”quizas algunos”)
? 0 0 1 (”quizas a”)
{4} 4 exactos
{4,} 4 o más
{4,8} entre 4 y 8
Alternar | una u otra
Agrupando ( ) agrupación almacenandola a una variable
(?: ) agrupacion sin almacenar en variable