Bien que cette question semble triviale, je suis certain qu'elle ne l'est pas :)
Je dois valider les noms et prénoms de personnes du monde entier. Imaginez une énorme liste de millions de noms et de prénoms dans laquelle je dois supprimer le mieux possible tout ce que j'identifie. Comment puis-je faire cela avec une expression régulière ? S'il ne s'agissait que de noms anglais, je pense que cela suffirait :
^[a-z -']+$
Cependant, je dois également soutenir ces cas :
- d'autres symboles de ponctuation tels qu'ils peuvent être utilisés dans différents pays (je ne sais pas lesquels, mais peut-être le savez-vous !)
- différents jeux de lettres Unicode (lettres accentuées, grecques, japonaises, chinoises, etc.)
- pas de chiffres ou de symboles ou de ponctuation inutile ou de runes, etc.
- les titres, les initiales intermédiaires, les suffixes ne font pas partie de ces données
- Les noms sont déjà séparés par des noms de famille.
- nous sommes prêts à forcer les noms ultra rares à être simplifiés (il existe une personne nommée '@', mais il n'est pas logique d'autoriser ce caractère partout. Faites preuve de pragmatisme et de bon sens).
- Notez que de nombreux pays ont des lois sur les noms et qu'il existe donc des normes à respecter.
Existe-t-il une méthode standard de validation de ces champs que je peux mettre en œuvre pour m'assurer que les utilisateurs de notre site Web bénéficient d'une expérience agréable et qu'ils peuvent effectivement utiliser leur nom lors de l'inscription dans la liste ?
Je chercherais quelque chose de similaire aux nombreuses regex "adresse électronique" que l'on peut trouver sur Google.
2 votes
Je doute que cela soit faisable - il y a trop de symboles Unicode pour exclure tous les symboles indésirables (et comment vous dire quels symboles chinois exclure ?) et il y a certainement trop de symboles valides pour les inclure tous (et vous aurez à nouveau le problème des symboles chinois). Je ne mettrais aucune contrainte sur un nom d'utilisateur - il peut même contenir des chiffres ; pensez aux noms aristocratiques.
9 votes
kalzumeus.com/2010/06/17/… Vous devriez lire attentivement ce qui suit.
0 votes
Peut-être cette regex :
[[:alpha:]-]/u