2011-10-25 19 views
5

Tengo que verificar la entrada del usuario para asegurarme de que el nombre, apellido (etc ...) se ingresaron correctamente y son válidos. Tengo que construir una expresión regular que comprobar si un usuario introduce repite letras en el nombre, apellido, etc ...Capturar letras de repetición en PHP - Expresiones regulares

Ejemplo:

  • Aaaron = mala debido a la 3 de un
  • AAron = buena
  • Hannah = bueno
  • Hannnah = mala debido a la 3 de N

¿existe una expresión regular PHP para atrapar estos casos s? (Tengo un conocimiento de expresiones regulares básicas, pero esto es demasiado para mí)

EDIT: Esto debería permitir que los números así: David 3 o III

Gracias

+8

Quién eres tú para validar el nombre de alguien en la ortografía? :) –

+0

¿Es esto realmente necesario? No debería haber necesidad de hacer más que validar, es decir, la longitud del nombre. Si un usuario no desea escribir su propio nombre, puede escribir cualquier cosa que sea válida, como "John Doe". Por el contrario, su expresión regular puede terminar invalidando algunos nombres más raros/exóticos. Yo no haría esto. –

+1

Posible duplicado de [¿Cómo puedo encontrar letras repetidas con una expresión regular de Perl?] (Http://stackoverflow.com/questions/178837/how-can-i-find-repeated-letters-with-a-perl-regex) – breiti

Respuesta

14

Puede usar otra forma de referencia para ese propósito

preg_match('/(\w)(\1+)/', $subject, $matches); 
print_r($matches); 

los medios \1 repetir la primera captura por lo que en ese caso \w.

En el caso de su ejemplo, no creo que el uso de expresiones regulares sea la mejor solución, ¿por qué no solo cuenta el número de instancias de los caracteres?

es decir

$charCountArray = array(); 
foreach ($name as $char) { 
    $charCountArray[$char]++; 
} 

referencia hacia atrás es una función avanzada, por suerte las funciones PCRE lo soporta.

Nota: preg_match coincidiría con sólo una secuencia, si lo que necesita saber todos los partidos por favor utilice preg_match_all

+0

muy buenas gracias – Tech4Wilco

5

Pruebe esta expresión regular:

/(\w)\1{2}/ 
Cuestiones relacionadas