expression régulière pour le premier et le dernier nom
Pour le site web des fins de validation, j'ai besoin de nom et de prénom de validation.
Pour le premier nom, il ne doit contenir que des lettres, peuvent être de plusieurs mots avec des espaces, et dispose d'un minimum de 3 caractères, mais un max au dessus de 30 caractères. Chaîne vide ne devrait pas être validé (par exemple, Jason, jason, jason smith, jason smith , JASON, Jason smith, jason Smith, jason SMITH).
Pour le nom de famille, il devrait être un seul mot, seulement des lettres, avec au moins 3 caractères, mais à plus de 30 caractères. Chaîne vide ne devrait pas être validé (par exemple, lazslo, Lazslo, LAZSLO).
- Ce qui la première, des noms comme "Jo"?
- juste une remarque: les traits d'union sont communs dans lastnames ... peut-être il y a lastnames avec des espaces, trop
- Cette validation sera pour un non site anglais, donc, dans mon pays, de moins ou de plus petit nom est 3 lettres 🙂 Aussi, il sera utilisé pour un facebook se connecter à mon adresse e-commerce site entegration. Ainsi, certains stupide facebook des noms comme "Danielle Cage ッ" ou "Hopee Agneau-" ne devrait pas être validé, l'utilisateur sera invité à réécrire leurs noms - sirnames dans ce cas 🙂
- Remarque: regularexpressionvalidator ignore vide entrées: cela peut ou peut ne pas être ce que vous voulez.
- Si possible, sauf si vous avez une foule de raisons pour que nécessitant un prénom et un nom, il suffit de fournir un seul champ "Nom". kalzumeus.com/2010/06/17/...
- Khoisan noms de, entre autres, rend l'utilisation de caractères spéciaux comme le "!". Irlandais noms de famille peuvent utiliser des apostrophes.
- Même si je suis contre toute validation stricte de noms, dans certains scénarios, il est essentiel de valider. Par exemple pour la vérification de l'ID, le nom d'utilisateur dans le formulaire doivent correspondre exactement aux noms dans les documents (p. ex. permis de conduire, passeport, etc.). Et vous pourriez être surpris de voir combien souvent les gens font des fautes de frappe ou de mettre des caractères spéciaux dans le nom des champs. Assurez-vous de fournir une bonne, les messages d'erreur ainsi.
- Selon l'OACI, qui définit également les normes pour les passeports internationaux, le nombre maximal de caractères dans le nom doit être 31.
- Pourquoi? Un utilisateur du premier et le dernier nom se compose de tout ce qu'ils décident d'utiliser. C'est un fait juridique. Vous n'avez aucune obligation de le "valider" à tous.
Vous devez vous connecter pour publier un commentaire.
N'oubliez pas les noms comme:
Cela devrait faire l'affaire pour la plupart des choses:
/^[a-z ,.'-]+$/i
OU de Soutien des noms internationaux avec super doux unicode:
/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]+$/u
.
(virgule/point/arrêt) puisque c'est l'expression générique =)őŐűŰ
sont manquantes, des caractères polonaisłŁ
ainsi, pour ne pas mentionner un certain nombre de lituanien et le letton caractères. Plutôt essayer de trouver une bibliothèque qui transforme les caractères exotiques dans le bon accent-moins la version, puis écrire le/^[a-z ,.'-]+$/i
regexp.陳大文
pas un nom valide d'ici?/^[\p{L}'][ \p{L}'-]*[\p{L}]$/u
, cependant assez indulgent.^[\p{L} ,.'-]*$
qui travaille pour l'Unicode tropSyntaxError: Invalid flags supplied to RegExp constructor 'u'
Vous faire de fausses hypothèses sur le format de nom et prénom. Il est probablement préférable de ne pas valider le nom, à l'exception de vérifier qu'elle est vide.
Après être passé par toutes ces réponses, j'ai trouvé un moyen de construire une petite regex qui prend en charge la plupart des langues, il permet seulement les caractères de mot. Il prend même en charge certains caractères spéciaux comme des traits d'union, les espaces et les apostrophes. Je l'ai testé en python et il prend en charge les caractères ci-dessous:
Caractères pris en charge:
^[\w'\-,.]*[^_!¡?÷?¿\/\\+=@#$%ˆ&*(){}|~<>;:[\]]*$
^[^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$
J'ai cherché et cherché et a joué et joue avec elle et même si elle n'est pas parfaite, elle peut aider les autres à faire une tentative pour valider les premier et dernier noms qui ont été donnés à une variable.
Dans mon cas, cette variable est $nom.
J'ai utilisé le code suivant pour mon PHP:
Je suis en train d'apprendre RegEx moi-même mais j'ai l'explication pour le code fourni par RegEx copain.
Ici, il est:
Affirmer position à une limite de mot «\b»
Correspondent à l'expression régulière ci-dessous et de capture de son match en backreference numéro 1
«([A-Z]{1}[a-z]{1,30}[- ]{0,1}|[A-Z]{1}[- \']{1}[A-Z]{0,1}[a-z]{1,30}[- ]{0,1}|[a-z]{1,2}[ -\']{1}[A-Z]{1}[a-z]{1,30}){2,5}»
Entre 2 et 5 fois, autant de fois que possible, de donner en retour que nécessaire (gourmand) «{2,5}»
* J'AI BESOIN D'UN PEU D'AIDE ICI À COMPRENDRE LES RAMIFICATIONS DE CETTE NOTE *
Remarque: j'ai répété la capture d'un groupe lui-même. Le groupe va prendre que la dernière itération. Mettre une capture d'un groupe autour de la répétition de groupe pour capturer toutes les itérations. «{2,5}»
Correspondre à l'expression régulière ci-dessous (d'essayer l'alternative suivante seulement si celui-ci échoue) «[A-Z]{1}[a-z]{1,30}[- ]{0,1}»
Correspondre à un caractère unique dans la gamme entre “A” et “Z” «[A-Z]{1}»
Exactement 1 fois «{1}»
Correspondre à un caractère unique dans la gamme entre “a” et “z” «[a-z]{1,30}»
Entre un et 30 fois, autant de fois que possible, de donner en retour que nécessaire (gourmand) «{1,30}»
Correspondre à un seul personnage présent dans la liste“- ” «[- ]{0,1}»
Entre zéro et une fois, autant de fois que possible, de donner en retour que nécessaire (gourmand) «{0,1}»
Ou correspondance d'expression régulière numéro 2 ci-dessous (d'essayer l'alternative suivante seulement si celui-ci échoue) «[A-Z]{1}[- \']{1}[A-Z]{0,1}[a-z]{1,30}[- ]{0,1}»
Correspondre à un caractère unique dans la gamme entre “A” et “Z” «[A-Z]{1}»
Exactement 1 fois «{1}»
Correspondre à un seul personnage présent dans la liste ci-dessous«[- \']{1}»
Exactement 1 fois «{1}»
L'un des caractères “- ” «- » Un " caractère «\'»
Correspondre à un caractère unique dans la gamme entre “A” et “Z” «[A-Z]{0,1}»
Entre zéro et une fois, autant de fois que possible, de donner en retour que nécessaire (gourmand) «{0,1}»
Correspondre à un caractère unique dans la gamme entre “a” et “z” «[a-z]{1,30}»
Entre un et 30 fois, autant de fois que possible, de donner en retour que nécessaire (gourmand) «{1,30}»
Correspondre à un seul personnage présent dans la liste“- ” «[- ]{0,1}»
Entre zéro et une fois, autant de fois que possible, de donner en retour que nécessaire (gourmand) «{0,1}»
Ou correspondance d'expression régulière numéro 3 ci-dessous (l'ensemble du groupe échoue si celui-ci omet de match) «[a-z]{1,2}[ -\']{1}[A-Z]{1}[a-z]{1,30}»
Correspondre à un caractère unique dans la gamme entre “a” et “z” «[a-z]{1,2}»
Entre une et 2 fois, autant de fois que possible, de donner en retour que nécessaire (gourmand) «{1,2}»
Correspondre à un caractère unique dans la gamme entre les “ ” et“'” «[ -\']{1}»
Exactement 1 fois «{1}»
Correspondre à un caractère unique dans la gamme entre “A” et “Z” «[A-Z]{1}»
Exactement 1 fois «{1}»
Correspondre à un caractère unique dans la gamme entre “a” et “z” «[a-z]{1,30}»
Entre un et 30 fois, autant de fois que possible, de donner en retour que nécessaire (gourmand) «{1,30}»
Je sais que cette validation totalement suppose que chaque personne qui remplit le formulaire a un nom occidental et qui peuvent élimine la grande majorité des gens dans le monde. Cependant, j'ai l'impression que c'est un pas dans la bonne direction. Peut-être cette expression régulière est trop basique pour les gourous de l'adresse d'une manière simpliste ou peut-être il ya une autre raison que j'ai été incapable de trouver le code ci-dessus dans mes recherches. J'ai passé beaucoup trop de temps à essayer de comprendre ce peu, vous remarquerez probablement juste comment brumeux mon esprit est sur tout cela, si vous regardez mon test de noms ci-dessous.
J'ai testé le code sur les noms et les résultats sont entre parenthèses à droite de chaque nom.
Si vous avez des noms de base, il doit y avoir plus d'un à cinq pour le code ci-dessus fonctionne, qui sont semblables à ceux que j'ai utilisé pendant les tests, ce code pourrait être pour vous.
Si vous avez des améliorations, s'il vous plaît laissez-moi savoir. Je suis juste dans les premières étapes (quelques mois de trouver RegEx.
Merci et bonne chance,
Steve
J'ai créé une coutume regex pour traiter avec les noms de:
J'ai essayé ces types de noms et trouvé de travail parfait
Ma RegEx ressemble à ceci:
MVC4 Modèle:
Noter le double
\\
pour échapper les caractèresPour ceux d'entre vous qui sont nouveaux pour les RegEx, j'ai pensé inclure une explication.
Prénom serait
Si vous avez besoin de l'ensemble de la première partie du nom pour être de moins de 30 lettres, vous devez vérifier que séparément, je pense. L'expression
".{3,30}"
devrait le faire.Votre nom de famille les exigences en matière de traduire en
mais vous devriez vérifier ces. Il ya beaucoup de noms contenant des espaces.
Comme maček dit:
N'oubliez pas les noms comme:
et de supprimer des cas comme:
Cela permettra de couvrir plus de cas:
Pour simplicities souci, vous pouvez utiliser:
La chose que j'aime, c'est que le nom de famille est toujours après le nom de la première, donc, si vous allez entrer dans cette appariés groupes dans une base de données, et dont le nom est John M. Smith, le 1er groupe sera
M. John M., et le 2ème groupe sera Smith.
Je suis en train de travailler sur l'app qui valide les Passeports Internationaux (OACI). Nous ne soutenir que les caractères anglais. Alors que la plupart des étrangers national de caractères peut être représenté par un caractère dans l'alphabet Latin par exemple, è par e, il y a plusieurs personnages qui exigent une lettre supplémentaire pour les représenter telles que l'allemand tréma qui implique un " e " à être ajouté à la lettre par exemple, ä par ae.
C'est le JavaScript Regex pour les premier et dernier noms que nous utilisons:
Le nombre maximum de caractères sur le passeport international est à 31.
Nous utilisons maxlength="31" pour le meilleur mot de messages d'erreur au lieu de l'inclure dans la regex.
Voici un extrait de notre code AngularJS 1.6 avec la forme et de la gestion d'erreur:
JS:
CSS:
HTML:
J'utilise:
Et de test pour les maxlength à l'aide d'un autre moyen
C'est ce que j'utilise.
Cette expression n'accepte que les noms avec un minimum de caractères, à partir de
A-Z a-z ,space and -
.Noms exemple:
Ionut Ionete, Ionut-Ionete Cantemir, Ionete Ionut-Cantemirm Ionut-Cantemir Ionete-Second
La limite du nom du personnage est de 3, si vous voulez genge cela, modifiez le {3,} à {6,}
^ affirme position au début d'une ligne.
\p{L} correspond à n'importe quel type de lettre à partir de n'importe quelle langue
{2,} Quantificateur — Matches entre 2 et un nombre illimité de fois, autant de fois que possible, de donner en retour que nécessaire (gourmand)
$ affirme position à la fin d'une ligne
De sorte qu'il devrait être un nom dans aucune langue contenant au moins 2 lettres(ou de symboles) sans chiffres ou autres caractères.
Donc, avec le client, nous avons créer ce fou de la regex:
Pour les premier et dernier noms theres sont vraiment seulement 2 choses que vous devriez être à la recherche pour:
Voici mon expression régulière:
var regex = /^[A-Za-z-,]{3,20}?=.*\d)/
1. Longueur
Ici le {3,20} limite la longueur de la chaîne entre 3 et 20 caractères.
2. Contenu
L'information entre les crochets [A-Za-z] permet de caractères majuscules et minuscules. Tous les symboles (-,.) sont également autorisés.
L'expression suivante va travailler sur n'importe quelle langue pris en charge par UTF-16 et veillera à ce qu'il y a un minimum de deux composants pour le nom (c'est à dire premier + dernier), mais permet aussi à n'importe quel nombre de prénoms.
Au moment d'écrire ces lignes, il semble qu'aucune des autres réponses répondent tous aux critères. Même
^\p{L}{2,}$
, qui est la plus proche, les chutes de courte durée, car il correspond aussi à "l'invisible", les caractères, tels queU+FEFF
(Largeur Nulle No-Break Space).Essayez ces solutions, pour un maximum de compatibilité, comme je l'ai déjà posté ici:
JavaScript:
var nm_re = /^(?:((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-.\s])){1,}(['’,\-\.]){0,1}){2,}(([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-. ]))*(([ ]+){0,1}(((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){1,})(['’\-,\.]){0,1}){2,}((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){2,})?)*)$/;
HTML5:
<input type="text" name="full_name" id="full_name" pattern="^(?:((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-.\s])){1,}(['’,\-\.]){0,1}){2,}(([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-. ]))*(([ ]+){0,1}(((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){1,})(['’\-,\.]){0,1}){2,}((([^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]'’,\-\.\s])){2,})?)*)$" required>
Fullname avec un seul espace:
Si vous voulez tout le premier nom à être entre 3 et 30 caractères, sans aucune restriction sur les mots individuels, essayez ceci :
Attention, il exclut toutes les lettres é,è,à,ï.
Si vous voulez la limite de 3 à 30 caractères à appliquer à chaque mot, Jens regexp va faire le travail.
Une simple fonction à l'aide de preg_match en php