ayuda con expresion regular para validar un nombre

Iniciado por d91, 17 Febrero 2016, 15:52 PM

0 Miembros y 1 Visitante están viendo este tema.

d91

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]+$";

engel lex

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)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Eleкtro

#2
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!








d91

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