Expression régulière pour le prénom et le nom

124

À des fins de validation du site Web, j'ai besoin de la validation du prénom et du nom.

Pour le prénom, il ne doit contenir que des lettres, peut être composé de plusieurs mots avec des espaces et comporter au minimum trois caractères, mais un maximum aux 30 premiers caractères. Une chaîne vide ne doit pas être validée (par exemple Jason , jason , jason smith , jason smith , JASON , Jason smith , jason Smith et jason SMITH ).

Pour le nom de famille, il doit s'agir d'un seul mot, uniquement des lettres, d'au moins trois caractères, mais d'au plus 30 caractères. Les chaînes vides ne doivent pas être validées (par exemple, lazslo , Lazslo et LAZSLO ).

Hellnar
la source
10
Et les prénoms comme «Jo»?
2010
6
juste une remarque: les tirets sont communs dans les noms de famille ... peut-être qu'il y a aussi des
noms de famille
2
Remarque: un validateur d'expression régulière ignorera les entrées vides: cela peut être ou non ce que vous voulez.
Hans Ke ing
4
Dans la mesure du possible, à moins que vous n'ayez une raison étonnamment convaincante d'exiger un prénom et un nom, fournissez simplement un seul champ "Nom". kalzumeus.com/2010/06/17/…
Chris
1
ou que dire de "X Æ A-12" twitter.com/elonmusk/status/1257508900812713984
Rishi Dua

Réponses:

195

N'oubliez pas les noms comme:

  • Mathias d'Arras
  • Martin Luther King jr.
  • Hector Sausage-Hausen

Cela devrait faire l'affaire pour la plupart des choses:

/^[a-z ,.'-]+$/i

OU Soutenez les noms internationaux avec unicode super doux:

/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]+$/u

maček
la source
4
J'échapper aux caractères spéciaux dans ces regexps - en particulier .(point décimal / point / arrêt complet) car il est le joker regexp =)
Joel Purra
30
Vous ne pouvez pas valider tous les caractères nationaux possibles. Par exemple őŐűŰ, il manque des caractères hongrois , des caractères polonais łŁégalement, sans parler d'un certain nombre de caractères lituaniens et lettons. Essayez plutôt de trouver une bibliothèque qui transforme les caractères exotiques dans la bonne version sans accent, puis écrivez l' /^[a-z ,.'-]+$/iexpression rationnelle.
gaborsch
69
Alors, n'est-ce 陳大文pas un nom valide ici?
Alvin Wong
16
Pour Unicode, utilisez /^[\p{L}'][ \p{L}'-]*[\p{L}]$/u, même s'il est assez indulgent.
Frederik Krautwald
4
AZ n'a pas besoin d'être inclus dans l'exemple d'origine car le modificateur i après l'expression signifie ignorer la casse.
mhanney le
73

Vous faites de fausses hypothèses sur le format du prénom et du nom. Il vaut probablement mieux ne pas valider du tout le nom, à part vérifier qu'il est vide.

Sjoerd
la source
aurait dû être un commentaire.
Dementic
32

Après avoir parcouru toutes ces réponses, j'ai trouvé un moyen de créer une petite regex qui prend en charge la plupart des langues et n'autorise que les caractères de mots. Il prend même en charge certains caractères spéciaux tels que les tirets, les espaces et les apostrophes. J'ai testé en python et il prend en charge les caractères ci-dessous:

^[\w'\-,.][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$

Caractères pris en charge:

abcdefghijklmnopqrstwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
áéíóúäëïöüÄ'
陳大文
łŁőŐűŰZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųū
ÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁ
ŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ.-
ñÑâê都道府県Федерации
আবাসযোগ্য জমির걸쳐 있는
CristianGuerrero
la source
2
Sur toutes les réponses, celle-ci a fonctionné comme un charme en utilisant le ng 4.
Deniss M.
1
Votre regex échoue sur une chaîne de 2 caractères. Je pense que cela a résolu le ^[\w'\-,.]*[^_!¡?÷?¿\/\\+=@#$%ˆ&*(){}|~<>;:[\]]*$
problème
Les caractères nationaux sont pris en charge mais pas sur la première position. Je changerais l'expression en^[^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$
TOUDIdel
18

J'ai créé une expression régulière personnalisée pour traiter les noms:

J'ai essayé ces types de noms et j'ai trouvé que cela fonctionnait parfaitement

  1. John Smith
  2. John D'Largy
  3. John Doe-Smith
  4. John Doe Smith
  5. Hector Sausage-Hausen
  6. Mathias d'Arras
  7. Martin Luther King
  8. Ai Wong
  9. Chao Chang
  10. Alzbeta Bara

Mon RegEx ressemble à ceci:

^([a-zA-Z]{2,}\s[a-zA-Z]{1,}'?-?[a-zA-Z]{2,}\s?([a-zA-Z]{1,})?)

Modèle MVC4:

[RegularExpression("^([a-zA-Z]{2,}\\s[a-zA-Z]{1,}'?-?[a-zA-Z]{2,}\\s?([a-zA-Z]{1,})?)", ErrorMessage = "Valid Charactors include (A-Z) (a-z) (' space -)") ]

Veuillez noter le double \\pour les caractères d'échappement

Pour ceux d'entre vous qui sont nouveaux dans RegEx, j'ai pensé inclure une explication.

^               // start of line
[a-zA-Z]{2,}    // will except a name with at least two characters
\s              // will look for white space between name and surname
[a-zA-Z]{1,}    // needs at least 1 Character
\'?-?           // possibility of **'** or **-** for double barreled and hyphenated surnames
[a-zA-Z]{2,}    // will except a name with at least two characters
\s?             // possibility of another whitespace
([a-zA-Z]{1,})? // possibility of a second surname
François Muller
la source
J'ai un test unitaire qui teste plusieurs noms, puis plusieurs choses qui ne sont pas des noms. La liste des noms non a un «jeton de test» comme première entrée. Cela correspond à cela.
Rob
C'est presque ce que je cherchais. Je suppose (peut-être à tort) que vous êtes un français. Et un cas n'est pas le manche que vous pouvez rencontrer en français: des noms composés, comme Jean-Pierre, Marie-Charlotte, etc ... Je suis nouveau à reg exp mais je suppose un -? comme vous l'avez fait pour le nom de famille, entre les 2 premiers mots, pourrait faire le travail.
Linpter
Salut Linpter, pas français, mais j'ai un nom français. Oui. Je n'ai pas testé cela, mais vous devriez pouvoir ajouter le - dans le premier [] donc changez: ^ ([a-zA-Z] {2,} \ s [a-zA-z] {1,} ' ? -? [a-zA-Z] {2,} \ s? ([a-zA-Z] {1,})?) TO: ^ ([a-zA-Z -] {2,} \ s [a-zA-z] {1,} '? -? [a-zA-Z] {2,} \ s? ([a-zA-Z] {1,})?)
Francois Muller
16

J'ai cherché et cherché et joué et joué avec et bien qu'il ne soit pas parfait, cela peut aider d'autres personnes à essayer de valider les noms et prénoms qui ont été fournis comme une variable.

Dans mon cas, cette variable est $ name.

J'ai utilisé le code suivant pour mon PHP:

    if (preg_match('/\b([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}/', $name)  
    # there is no space line break between in the above "if statement", any that   
    # you notice or perceive are only there for formatting purposes.  
    # 
    # pass - successful match - do something
    } else {
    # fail - unsuccessful match - do something

J'apprends RegEx moi-même mais j'ai l'explication du code fournie par le copain RegEx.
C'est ici:

Affirmer la position à une limite de mot «\ b»

Faites correspondre l'expression régulière ci-dessous et capturez sa correspondance dans la référence arrière numéro 1
«([AZ] {1} [az] {1,30} [-] {0,1} | [AZ] {1} [- \ '] { 1} [AZ] {0,1} [az] {1,30} [-] {0,1} | [az] {1,2} [- \ '] {1} [AZ] {1} [ az] {1,30}) {2,5} »

Entre 2 et 5 fois, autant de fois que possible, redonner au besoin (gourmand) «{2,5}»

* J'AI BESOIN D'AIDE ICI POUR COMPRENDRE LES RAMIFICATIONS DE CETTE NOTE *

Remarque: j'ai répété le groupe de capture lui-même. Le groupe ne capturera que la dernière itération. Placez un groupe de capture autour du groupe répété pour capturer toutes les itérations. «{2,5}»

Match soit l'expression régulière ci-dessous (en essayant la prochaine alternative seulement si celle-ci échoue) «[AZ] {1} [az] {1,30} [-] {0,1}»

Faire correspondre un seul caractère compris entre "A" et "Z" «[AZ] {1}»

Exactement 1 fois «{1}»

Correspond à un seul caractère compris entre "a" et "z" «[az] {1,30}»

Entre une et 30 fois, autant de fois que possible, redonner au besoin (gourmand) «{1,30}»

Correspond à un seul caractère présent dans la liste «-» «[-] {0,1}»

Entre zéro et une fois, autant de fois que possible, redonner au besoin (gourmand) «{0,1}»

Ou faites correspondre l'expression régulière numéro 2 ci-dessous (en essayant la prochaine alternative seulement si celle-ci échoue) «[AZ] {1} [- \ '] {1} [AZ] {0,1} [az] {1,30} [ -] {0,1} »

Faire correspondre un seul caractère compris entre "A" et "Z" «[AZ] {1}»

Exactement 1 fois «{1}»

Correspond à un seul caractère présent dans la liste ci-dessous «[- \ '] {1}»

Exactement 1 fois «{1}»

Un des caractères «-» «-» Un «caractère« \ '»

Correspond à un seul caractère compris entre «A» et «Z» «[AZ] {0,1}»

Entre zéro et une fois, autant de fois que possible, redonner au besoin (gourmand) «{0,1}»

Correspond à un seul caractère compris entre "a" et "z" «[az] {1,30}»

Entre une et 30 fois, autant de fois que possible, redonner au besoin (gourmand) «{1,30}»

Correspond à un seul caractère présent dans la liste «-» «[-] {0,1}»

Entre zéro et une fois, autant de fois que possible, redonner au besoin (gourmand) «{0,1}»

Ou faites correspondre l'expression régulière numéro 3 ci-dessous (le groupe entier échoue si celui-ci ne correspond pas) «[az] {1,2} [- \ '] {1} [AZ] {1} [az] {1,30} »

Correspond à un seul caractère compris entre "a" et "z" «[az] {1,2}»

Entre une et 2 fois, autant de fois que possible, redonner au besoin (gourmand) «{1,2}»

Correspond à un seul caractère compris entre «» et «'» «[- \'] {1}»

Exactement 1 fois «{1}»

Faire correspondre un seul caractère compris entre "A" et "Z" «[AZ] {1}»

Exactement 1 fois «{1}»

Correspond à un seul caractère compris entre "a" et "z" «[az] {1,30}»

Entre une et 30 fois, autant de fois que possible, redonner au besoin (gourmand) «{1,30}»

Je sais que cette validation suppose totalement que chaque personne remplissant le formulaire a un nom occidental et cela peut éliminer la grande majorité des gens dans le monde. Cependant, j'ai le sentiment que c'est un pas dans la bonne direction. Peut-être que cette expression régulière est trop basique pour que les gourous puissent la traiter de manière simpliste ou peut-être qu'il y a une autre raison pour laquelle je n'ai pas pu trouver le code ci-dessus dans mes recherches. J'ai passé beaucoup trop de temps à essayer de comprendre cela, vous remarquerez probablement à quel point mon esprit est brumeux sur tout cela si vous regardez les noms de mes tests ci-dessous.

J'ai testé le code sur les noms suivants et les résultats sont entre parenthèses à droite de chaque nom.

  1. STEVE SMITH (échec)
  2. Stev3 Smith (échec)
  3. STeve Smith (échec)
  4. Steve SMith (échec)
  5. Steve Sm1th (passé le Steve Sm)
  6. d'Are à Beaware (passé le Are à Beaware)
  7. Jo Blow (passé)
  8. Hyoung Kyoung Wu (passé)
  9. Mike O'Neal (passé)
  10. Steve Johnson-Smith (passé)
  11. Jozef-Schmozev Hiemdel (passé)
  12. O Henry Smith (passé)
  13. Mathais d'Arras (passé)
  14. Martin Luther King Jr (passé)
  15. Downtown-James Brown (passé)
  16. Darren McCarty (passé)
  17. George De FunkMaster (passé)
  18. Kurtis B-Ball Basketball (réussi)
  19. Ahmad el Jeffe (passé)

Si vous avez des noms de base, il doit y en avoir plus d'un à cinq pour que le code ci-dessus fonctionne, qui sont similaires à ceux que j'ai utilisés lors des tests, ce code pourrait être pour vous.

Si vous avez des améliorations, veuillez me le faire savoir. Je suis juste au tout début (les premiers mois de la découverte de RegEx.

Merci et bonne chance, Steve

Steve Kinzey
la source
1
Des choses comme "The Fourth" ou "IV" fonctionneraient-elles avec ça?
majidarif
11

Le prénom serait

"([a-zA-Z]{3,30}\s*)+"

Si vous avez besoin que toute la partie du prénom soit inférieure à 30 lettres, vous devez le vérifier séparément, je pense. L'expression ".{3,30}"devrait faire cela.

Vos exigences en matière de nom de famille se traduiraient par

"[a-zA-Z]{3,30}"

mais vous devriez les vérifier. Il y a beaucoup de noms de famille contenant des espaces.

Jens
la source
Est-ce que cela vérifie les espaces entre?
Y_Y
2
Et O'Connor ? L'apostrophe doit également être incluse.
spaceman
1
Assez incomplet. Le prénom peut être "Jean-Claude" avec tiret. Le nom de famille pourrait être "D'arc" avec citation. Et si "François" était le prénom?
bart
1
Et "Al"? Prénom valide. Juste deux lettres. Qu'en est-il des noms chinois, russes et hindis? Et les noms européens?
Christian Hujer
cela ne fonctionnerait pas pour beaucoup de noms non anglais ou (non latins?)
oldboy
7

Comme l'a dit maček:

N'oubliez pas les noms comme:

Mathias d'Arras

Martin Luther King jr.

Hector Sausage-Hausen

et pour supprimer des cas comme:

..Mathias

Martin King, Jr. -

Cela couvrira plus de cas:

^([a-z]+[,.]?[ ]?|[a-z]+['-]?)+$
Asim KT
la source
Si je veux limiter la longueur de mes caractères, quel pourrait être le code pour cela?
G.Abhisek
1
Oui, Martin Luther King Jr. revient en match, tout comme le roi Henry le huitième.
Steve Kinzey
7

Je travaille sur l'application qui valide les passeports internationaux (ICAO). Nous ne prenons en charge que les caractères anglais. Alors que la plupart des caractères nationaux étrangers peuvent être représentés par un caractère de l'alphabet latin, par exemple è par e, il existe plusieurs caractères nationaux qui nécessitent une lettre supplémentaire pour les représenter, comme le tréma allemand qui nécessite l'ajout d'un `` e '' à la lettre par exemple ä par ae.

Voici le JavaScript Regex pour le prénom et le nom que nous utilisons:

/^[a-zA-Z '.-]*$/

Le nombre maximum de caractères sur le passeport international est de 31 maximum . Nous utilisons maxlength = "31" pour améliorer les messages d'erreur de mot au lieu de l'inclure dans l'expression régulière.

Voici un extrait de notre code dans AngularJS 1.6 avec la gestion des formulaires et des erreurs:

class PassportController {
  constructor() {
    this.details = {};
    // English letters, spaces and the following symbols ' - . are allowed
    // Max length determined by ng-maxlength for better error messaging
    this.nameRegex = /^[a-zA-Z '.-]*$/;
  }
}

angular.module('akyc', ['ngMessages'])
  .controller('PassportController', PassportController);
 
.has-error p[ng-message] {
  color: #bc111e;
}

.tip {
  color: #535f67;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.6/angular-messages.min.js"></script>

<main ng-app="akyc" ng-controller="PassportController as $ctrl">
  <form name="$ctrl.form">

    <div name="lastName" ng-class="{ 'has-error': $ctrl.form.lastName.$invalid} ">
        <label for="pp-last-name">Surname</label>
        <div class="tip">Exactly as it appears on your passport</div>
        <div ng-messages="$ctrl.form.lastName.$error" ng-if="$ctrl.form.$submitted" id="last-name-error">
          <p ng-message="required">Please enter your last name</p>
          <p ng-message="maxlength">This field can be at most 31 characters long</p>
          <p ng-message="pattern">Only English letters, spaces and the following symbols ' - . are allowed</p>
        </div>
        
        <input type="text" id="pp-last-name" ng-model="$ctrl.details.lastName" name="lastName"
               class="form-control" required ng-pattern="$ctrl.nameRegex" ng-maxlength="31" aria-describedby="last-name-error" />
      </div>

      <button type="submit" class="btn btn-primary">Test</button>

  </form>
</main>

Alexander Burakevych
la source
@danieltakeshi vous n'avez pas utilisé mon Regex. Utilisez ceci: / ^ [a-zA-Z '.-] * $ /
Alexander Burakevych
5

J'utilise:

/^(?:[\u00c0-\u01ffa-zA-Z'-]){2,}(?:\s[\u00c0-\u01ffa-zA-Z'-]{2,})+$/i

Et testez la longueur maximale en utilisant d'autres moyens

malix
la source
5

Ce regex fonctionne pour moi (utilisait dans Angular 8):

([a-zA-Z',.-]+( [a-zA-Z',.-]+)*){2,30}

entrez la description de l'image ici

Il sera invalide s'il y a: -

  1. Tout espace au début ou à la fin du nom
  2. J'ai des symboles, par exemple @
  3. Moins de 2 ou plus de 30

Exemple de prénom invalide (espace)

entrez la description de l'image ici

Exemple de prénom valide:

entrez la description de l'image ici

Bases à neige
la source
6
Et «Björk Guðmundsdóttir»?
Mariusz Jamro le
4

Pour simplifier, vous pouvez utiliser:

(.*)\s(.*)

Ce que j'aime à ce sujet, c'est que le nom de famille est toujours après le prénom, donc si vous allez entrer ces groupes correspondants dans une base de données et que le nom est John M. Smith, le 1er groupe sera John M. , et le 2e groupe sera Smith.

egekhter
la source
2
^\p{L}{2,}$

^ affirme la position au début d'une ligne.

\ p {L} correspond à n'importe quel type de lettre de n'importe quelle langue

{2,} Quantifier - Correspond entre 2 fois et un nombre illimité de fois, autant de fois que possible, en redonnant au besoin (gourmand)

$ affirme la position à la fin d'une ligne

Il doit donc s'agir d'un nom dans n'importe quelle langue contenant au moins 2 lettres (ou symboles) sans chiffres ni autres caractères.

Mihail Fernandes
la source
gardez à l'esprit que certains caractères tels que 'et - sont valides dans les noms.
Mathijs Segers
1

Donc, avec le client, nous créons cette regex folle:

(^$)|(^([^\-!#\$%&\(\)\*,\./:;\?@\[\\\]_\{\|\}¨ˇ“”€\+<=>§°\d\s¤®™©]| )+$)
Máťa - Stitod.cz
la source
1

Pour les noms et prénoms, il n'y a en réalité que 2 choses que vous devriez rechercher:

  1. Longueur
  2. Contenu

Voici mon expression régulière:

var regex = /^[A-Za-z-, </font>{3,20}?=.*\d)/

1. Longueur

Ici, {3,20} contraint la longueur de la chaîne entre 3 et 20 caractères.

2. Contenu

Les informations entre les crochets [A-Za-z] autorisent les caractères majuscules et minuscules. Tous les symboles suivants (- ,.) sont également autorisés.

J Dorrian
la source
1

C'est ce que j'utilise.

Cette expression régulière n'accepte que les noms avec un minimum de caractères, de A-Z a-z ,space and -.

Exemple de noms:

Ionut Ionete, Ionut-Ionete Cantemir, Ionete Ionut-Cantemirm Ionut-Cantemir Ionete-Second

La limite du caractère du nom est 3. Si vous souhaitez changer cela, modifiez {3,} en {6,}

([a-zA-Z\-]+){3,}\s+([a-zA-Z\-]+){3,}
Ionut Ionete
la source
2
Qu'en est-il de ä å ö Ä Å Ö etc.? Très commun dans les noms suédois. Le nom de famille O'Conner échouera également et les noms à double canon donneront également des problèmes. Ce sera très frustrant pour les personnes qui ont des noms aussi valides.
Wilt
Qu'en est-il de l'apostrophe dans des noms comme O'Connor?
Fogmeister
mon expression renvoie Michael Jordan O'Reilly Jr. comme nom valide
Steve Kinzey
0

L'expression suivante fonctionnera sur n'importe quel langage pris en charge par UTF-16 et garantira qu'il y a un minimum de deux composants dans le nom (c'est-à-dire premier + dernier), mais autorisera également n'importe quel nombre de prénoms.

/^(\S+ )+\S+$/u

Au moment d'écrire ces lignes, il semble qu'aucune des autres réponses ne réponde à tous ces critères. Même ^\p{L}{2,}$, qui est le plus proche, est insuffisant car il correspondra également aux caractères "invisibles", tels que U+FEFF(Espace sans rupture de largeur zéro).

Gabriel Somoza
la source
ne transmet pas javascript pour regexr.com 1) avertissant que la fonction Unicode peut ne pas être prise en charge dans tous les navigateurs. 2) il autorise également les nombres dans l'expression régulière. exemple: michael dimmittsasd2123123
Michael Dimmitt
0

Essayez ces solutions, pour une compatibilité maximale, 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>

James Anderson Jr.
la source
0

Cela semble faire le travail pour moi:

[\S]{2,} [\S]{2,}( [\S]{2,})*
AL
la source
-1

Une fonction simple utilisant preg_match en php

<?php
function name_validation($name) {
    if (!preg_match("/^[a-zA-Z ]*$/", $name) === false) {
        echo "$name is a valid name";
    } else {
        echo "$name is not a valid name";
    }
}

//Test
name_validation('89name');
?>
les lumières
la source
-1

Nom complet avec un seul espace:

^[a-zA-Z'\-\pL]+(?:(?! {2})[a-zA-Z'\-\pL ])*[a-zA-Z'\-\pL]+$
Lucas Moyano Angelini
la source
-2

Si vous voulez que le prénom entier comprenne entre 3 et 30 caractères sans aucune restriction sur les mots individuels, essayez ceci:

[a-zA-Z ]{3,30}

Attention, il exclut toutes les lettres étrangères comme é, è, à, ï.

Si vous voulez que la limite de 3 à 30 caractères s'applique à chaque mot individuel, Jens regexp fera le travail.

Thibault Falise
la source
-2
var name = document.getElementById('login_name').value; 
if ( name.length < 4  && name.length > 30 )
{
    alert ( 'Name length is mismatch ' ) ;
} 


var pattern = new RegExp("^[a-z\.0-9 ]+$");
var return_value = var pattern.exec(name);
if ( return_value == null )
{
    alert ( "Please give valid Name");
    return false; 
} 
Pavunkumar
la source