2010-09-13 5 views
1

J'ai cherché un modèle regex pour un nom complet et je n'arrive pas à en trouver un.Regex FullName Pattern

serait idéal match comme

Tom Franklin 
tom Franklin 
tom franklin 
tom franklin-jones 

permettent à savoir 1 espace au milieu et quelques-uns des traits d'union de base, etc, mais c'est tout. Est-ce que quelqu'un sait comment faire ça ?

Edit: Y compris

René Hadron van der Ööps 
+0

M. O'Brien sera déçu que son nom est invalide;) –

+0

M. O'Brien a besoin d'un prénom: P mais oui 2ème nom est valide! – Tom

+3

S'il vous plaît ne pas limiter ce que vous considérez comme "valide" par regex brut. "Jim-Bob O'Reilly" sont "René Hadron van der Ööps" seulement le début ... il y a * beaucoup * plus de personnages et de constructions présents dans les noms des gens que vous ne le pensez. – bobince

Répondre

1

Vous pouvez utiliser /([\p{L}'-]+) ([\p{L}'-]+)/ pour attraper toutes les lettres possibles. Ou /([a-z'-]+) ([a-z'-]+)/i pour attraper uniquement les lettres ascii. Le groupe ([\p{L}'-]+) signifie [\p{L}'-] répété au moins une fois. Et \p{L} signifie tout unicode lettre. Le - à la fin signifie que "-" est autorisé dans les noms.

Note: Lorsque vous prenez des caractères avec [] le trait d'union doit être soit au début de vos personnages définis ou à la fin.


Edit:

M. O'Brien est heureux maintenant.


Ressources:

+0

+1 pour couvrir Unicode. –

+0

remercie colin. ouais im en utilisant C# - n'aime pas \ w et \ s - me donne "séquence d'échappement non reconnue" – Tom

+0

@Tom n'oubliez pas d'échapper le \ soit en écrivant "\\ s" ou @ "\ s" –

0

\ w + \ s + [a-zA-Z -] +

+0

salut gamebit - merci pour la réponse. J'utilise ascii et quand j'entre cela - ne veut pas \ w et \ s - me donne "séquence d'échappement non reconnue" – Tom