Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .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 (csharp) [Seleccionar]

c#
string nombre = "Juan Alvarez";

string expresion = "^[A-Z][a-z]+$";
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
^[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 (vbnet) [Seleccionar]
string name = "Juan Álvarez"; // .Trim(' ')
string expr = "^[\w\.\-\s]+$";

Regex rgx = new Regex(expr, RegexOptions.IgnoreCase);

Console.WriteLine(rgx.IsMatch(name));
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).




Cita de: d91 en 17 Febrero 2016, 16:45 PMcreo que es mejor sin acentos

Entonces modificando mi expresión, sería así:
"^[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