Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: d91 en 17 Febrero 2016, 15:52 pm



Título: ayuda con expresion regular para validar un nombre
Publicado por: d91 en 17 Febrero 2016, 15:52 pm
hola, estoy tratando de validar un nombre de persona con una expresión regular pero solo he logrado validar un nombre y no encuentro como repetir esta validación ya sea con un + o un * y agregarle el  espacio en blanco
Código
  1. c#
  2. string nombre = "Juan Alvarez";
  3.  
  4. string expresion = "^[A-Z][a-z]+$";
  5.  


Título: Re: ayuda con expresion regular para validar un nombre
Publicado por: engel lex en 17 Febrero 2016, 16:12 pm
los nombres son complicados de validar ya que no siguen un orden formal

la expresión puede ser
Código:
^[A-Z][a-z]+\s[A-Z][a-z]+$

pero si tiene acentos no lo evaluará (no están incluidas en esa expresión)

los siguientes patrones no serán reconocidos
"Vasco da Gama" (es "da Gama", son 2 cosas)
"Leonardo DiCaprio" (pegado con 2 mayúsculas)
"Reinaldo Dos Santos" (mezcla de las anteriores, notese el "Dos" con mayúsculas)
"Ángel Gómez" (tiene acentos)


Título: Re: ayuda con expresion regular para validar un nombre
Publicado por: Eleкtro en 17 Febrero 2016, 16:21 pm
Puedes probar con esta expresión, la cual si evalua vocales acentuadas:

Código
  1. string name = "Juan Álvarez"; // .Trim(' ')
  2. string expr = "^[\w\.\-\s]+$";
  3.  
  4. Regex rgx = new Regex(expr, RegexOptions.IgnoreCase);
  5.  
  6. Console.WriteLine(rgx.IsMatch(name));
  7. Console.WriteLine(rgx.Match(name));

Para lo demás simplemente asumimos que el usuario conoce su nombre y sabe escribirlo, aceptando posibles inconsistencias como escribir "David De María" y "David DeMaría.

PD: Fuera de .Net tendrías que reemplazar \w por \p{Letra} para reconocer caracteres acentuados de la categoría Unicode ...siempre que el motor Regex de ese lenguaje permita su uso (en .Net puedes utilizarlo también, pero es innecesario).



creo que es mejor sin acentos

Entonces modificando mi expresión, sería así:
Código:
"^[A-z\.\-\s]+$"

Saludos!


Título: Re: ayuda con expresion regular para validar un nombre
Publicado por: d91 en 17 Febrero 2016, 16:45 pm
gracias, estoy haciendo inserciones en una base de datos y creo que es mejor sin acentos porque a veces las consultas devuelven caracteres raros según sea el dbms