Regulärer Ausdruck für Vor- und Nachnamen

122

Für die Validierung der Website benötige ich die Validierung von Vor- und Nachnamen.

Der Vorname sollte nur Buchstaben enthalten, kann aus mehreren Wörtern mit Leerzeichen bestehen und besteht aus mindestens drei Zeichen, maximal jedoch aus den oberen 30 Zeichen. Eine leere Zeichenkette sollte nicht (zB validiert werden Jason , Jason , Jason Smith , Jason Smith , JASON , Jason Smith , Jason Smith und Jason Smith ).

Für den Nachnamen sollte es sich um ein einzelnes Wort handeln, nur um Buchstaben mit mindestens drei Zeichen, jedoch höchstens 30 Zeichen. Leere Zeichenfolgen sollten nicht überprüft werden (z. B. Lazslo , Lazslo und LAZSLO ).

Hellnar
quelle
10
Was ist mit Vornamen wie 'Jo'?
Am
6
Nur eine Bemerkung: Bindestriche sind in Nachnamen üblich ... vielleicht gibt es auch Nachnamen mit Leerzeichen
Tanascius
2
Hinweis: Ein regularexpressionvalidator ignoriert leere Eingaben: Dies kann das sein, was Sie wollen oder nicht.
Hans Keing
4
Wenn möglich, geben Sie einfach ein einzelnes Feld "Name" an, es sei denn, Sie haben einen erstaunlich zwingenden Grund, einen Vor- und Nachnamen zu verlangen. kalzumeus.com/2010/06/17/…
Chris
1
oder was ist mit "X Æ A-12" twitter.com/elonmusk/status/1257508900812713984
Rishi Dua

Antworten:

194

Vergessen Sie nicht Namen wie:

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

Dies sollte für die meisten Dinge den Trick tun:

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

ODER Unterstützen Sie internationale Namen mit super süßem Unicode:

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

maček
quelle
4
Ich würde den Sonderzeichen in diesen regulären Ausdrücken entkommen - insbesondere .(Dezimalpunkt / Punkt / Punkt), da es sich um den regulären Ausweis handelt =)
Joel Purra
30
Sie können nicht alle möglichen nationalen Zeichen überprüfen. Zum Beispiel őŐűŰfehlen ungarische Zeichen , polnische Zeichen łŁ, ganz zu schweigen von einigen litauischen und lettischen Zeichen. Versuchen Sie lieber, eine Bibliothek zu finden, die die exotischen Charaktere in die richtige Version ohne Akzent /^[a-z ,.'-]+$/iumwandelt , und schreiben Sie dann den regulären Ausdruck.
Gaborsch
69
Ist hier also 陳大文kein gültiger Name?
Alvin Wong
16
Verwenden Sie für Unicode /^[\p{L}'][ \p{L}'-]*[\p{L}]$/ujedoch ziemlich verzeihend.
Frederik Krautwald
4
AZ muss nicht in das ursprüngliche Beispiel aufgenommen werden, da der Modifikator i nach dem Ausdruck Groß- / Kleinschreibung ignorieren bedeutet.
mhanney
73

Sie machen falsche Annahmen über das Format von Vor- und Nachnamen. Es ist wahrscheinlich besser, den Namen überhaupt nicht zu überprüfen, außer zu überprüfen, ob er leer ist.

Sjoerd
quelle
hätte ein Kommentar sein sollen.
Dementic
32

Nachdem ich all diese Antworten durchgesehen hatte, fand ich einen Weg, einen winzigen regulären Ausdruck zu erstellen, der die meisten Sprachen unterstützt und nur Wortzeichen zulässt. Es werden sogar einige Sonderzeichen wie Bindestriche, Leerzeichen und Apostrophe unterstützt. Ich habe in Python getestet und es unterstützt die folgenden Zeichen:

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

Unterstützte Charaktere:

abcdefghijklmnopqrstwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
áéíóúäëïöüÄ'
陳大文
łŁőŐűŰZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųū
ÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁ
ŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ.-
ñÑâê都道府県Федерации
আবাসযোগ্য জমির걸쳐 있는
CristianGuerrero
quelle
2
Von allen Antworten wirkte diese wie ein Zauber mit ng 4.
Deniss M.
1
Ihre Regex schlägt bei einer Zeichenfolge mit 2 Zeichen fehl. Ich denke, das hat es behoben^[\w'\-,.]*[^_!¡?÷?¿\/\\+=@#$%ˆ&*(){}|~<>;:[\]]*$
TKA
Nationale Zeichen werden unterstützt, jedoch nicht an erster Stelle. Ich würde den Ausdruck in ändern^[^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$
TOUDIdel
18

Ich habe einen benutzerdefinierten regulären Ausdruck für Namen erstellt:

Ich habe diese Art von Namen ausprobiert und festgestellt, dass sie perfekt funktionieren

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

Mein RegEx sieht so aus:

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

MVC4-Modell:

[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 -)") ]

Bitte beachten Sie das Doppel \\ für Escape-Zeichen

Für diejenigen unter Ihnen, die neu bei RegEx sind, dachte ich, ich würde eine Erklärung hinzufügen.

^               // 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
Francois Müller
quelle
Ich habe einen Unit-Test, der mehrere Namen testet, dann einige Dinge, die keine Namen sind. Die Liste der Nichtnamen enthält als ersten Eintrag 'Test-Token'. Das passt dazu.
Rob
Es ist fast das, wonach ich gesucht habe. Ich denke (vielleicht zu Unrecht), dass Sie ein Franzose sind. Und ein Fall ist nicht behandelt, dem Sie auf Französisch begegnen können: komponierte Namen wie Jean-Pierre, Marie-Charlotte usw. Ich bin neu bei reg exp, aber ich denke ein -? Wie Sie es für den Nachnamen getan haben, könnte zwischen den beiden ersten Wörtern die Arbeit erledigt werden.
Linpter
Hallo Linpter, nicht französisch, aber ich habe einen französischen Namen. Ja. Ich habe dies nicht getestet, aber Sie sollten in der Lage sein, das - im ersten [] hinzuzufügen, also ändern Sie: ^ ([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

Ich habe gesucht und gesucht und gespielt und damit gespielt, und obwohl es nicht perfekt ist, kann es anderen helfen, den Versuch zu unternehmen, Vor- und Nachnamen zu validieren, die als eine Variable angegeben wurden.

In meinem Fall ist diese Variable $ name.

Ich habe den folgenden Code für mein PHP verwendet:

    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

Ich lerne RegEx selbst, habe aber die Erklärung für den Code, wie er von RegEx Buddy bereitgestellt wird.
Hier ist es:

Position an einer Wortgrenze festlegen «\ b»

Passen Sie den regulären Ausdruck unten an und erfassen Sie seine Übereinstimmung in der Rückreferenznummer 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} »

Zwischen 2 und 5 Mal, so oft wie möglich, nach Bedarf zurückgeben (gierig) «{2,5}»

* Ich brauche hier Hilfe, um die RAMIFIKATIONEN DIESER ANMERKUNG zu verstehen. *

Hinweis: Ich habe die Erfassungsgruppe selbst wiederholt. Die Gruppe erfasst nur die letzte Iteration. Legen Sie eine Erfassungsgruppe um die wiederholte Gruppe, um alle Iterationen zu erfassen. «{2,5}»

Passen Sie entweder den unten stehenden regulären Ausdruck an (versuchen Sie die nächste Alternative nur, wenn dieser fehlschlägt) «[AZ] {1} [az] {1,30} [-] {0,1}»

Ordnen Sie ein einzelnes Zeichen im Bereich zwischen "A" und "Z" zu. «[AZ] {1}»

Genau 1 mal «{1}»

Ordnen Sie ein einzelnes Zeichen im Bereich zwischen "a" und "z" zu. «[Az] {1,30}»

Zwischen ein und 30 Mal, so oft wie möglich, nach Bedarf zurückgeben (gierig) «{1,30}»

Ordnen Sie ein einzelnes Zeichen in der Liste "-" zu. «[-] {0,1}»

Zwischen null und einmal, so oft wie möglich, nach Bedarf zurückgeben (gierig) «{0,1}»

Oder stimmen Sie mit dem regulären Ausdruck Nummer 2 unten überein (versuchen Sie die nächste Alternative nur, wenn diese fehlschlägt). «[AZ] {1} [- \ '] {1} [AZ] {0,1} [az] {1,30} [ -] {0,1} »

Ordnen Sie ein einzelnes Zeichen im Bereich zwischen "A" und "Z" zu. «[AZ] {1}»

Genau 1 mal «{1}»

Stimmen Sie mit einem einzelnen Zeichen in der folgenden Liste überein «[- \ '] {1}»

Genau 1 mal «{1}»

Eines der Zeichen "-" «-» Ein 'Zeichen «\'»

Ordnen Sie ein einzelnes Zeichen im Bereich zwischen "A" und "Z" zu. «[AZ] {0,1}»

Zwischen null und einmal, so oft wie möglich, nach Bedarf zurückgeben (gierig) «{0,1}»

Ordnen Sie ein einzelnes Zeichen im Bereich zwischen "a" und "z" zu. «[Az] {1,30}»

Zwischen ein und 30 Mal, so oft wie möglich, nach Bedarf zurückgeben (gierig) «{1,30}»

Ordnen Sie ein einzelnes Zeichen in der Liste "-" zu. «[-] {0,1}»

Zwischen null und einmal, so oft wie möglich, nach Bedarf zurückgeben (gierig) «{0,1}»

Oder stimmen Sie mit dem regulären Ausdruck Nummer 3 unten überein (die gesamte Gruppe schlägt fehl, wenn dieser nicht übereinstimmt) «[az] {1,2} [- \ '] {1} [AZ] {1} [az] {1,30} »

Ordnen Sie ein einzelnes Zeichen im Bereich zwischen "a" und "z" zu. «[Az] {1,2}»

Zwischen ein und zwei Mal, so oft wie möglich, nach Bedarf zurückgeben (gierig) «{1,2}»

Ordnen Sie ein einzelnes Zeichen im Bereich zwischen "" und "'" zu. «[- \'] {1}»

Genau 1 mal «{1}»

Ordnen Sie ein einzelnes Zeichen im Bereich zwischen "A" und "Z" zu. «[AZ] {1}»

Genau 1 mal «{1}»

Ordnen Sie ein einzelnes Zeichen im Bereich zwischen "a" und "z" zu. «[Az] {1,30}»

Zwischen ein und 30 Mal, so oft wie möglich, nach Bedarf zurückgeben (gierig) «{1,30}»

Ich weiß, dass diese Validierung davon ausgeht, dass jede Person, die das Formular ausfüllt, einen westlichen Namen hat und dass dadurch möglicherweise die überwiegende Mehrheit der Menschen auf der Welt eliminiert wird. Ich denke jedoch, dass dies ein Schritt in die richtige Richtung ist. Vielleicht ist dieser reguläre Ausdruck zu einfach, als dass die Gurus ihn einfach ansprechen könnten, oder vielleicht gibt es einen anderen Grund, warum ich den obigen Code bei meinen Suchen nicht finden konnte. Ich habe viel zu lange versucht, dieses bisschen herauszufinden. Sie werden wahrscheinlich feststellen, wie neblig meine Gedanken bei all dem sind, wenn Sie sich meine Testnamen unten ansehen.

Ich habe den Code mit den folgenden Namen getestet und die Ergebnisse stehen in Klammern rechts neben jedem Namen.

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

Wenn Sie grundlegende Namen haben, muss es mehr als einen bis fünf geben, damit der obige Code funktioniert. Diese ähneln denen, die ich beim Testen verwendet habe. Dieser Code ist möglicherweise für Sie bestimmt.

Wenn Sie Verbesserungen haben, lassen Sie es mich bitte wissen. Ich bin gerade in den frühen Stadien (erste Monate, um RegEx herauszufinden.

Danke und viel Glück, Steve

Steve Kinzey
quelle
1
Würden Dinge wie "The Fourth" oder "IV" damit funktionieren?
Majidarif
11

Vorname wäre

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

Wenn Sie möchten, dass der gesamte Teil des Vornamens kürzer als 30 Buchstaben ist, müssen Sie dies separat überprüfen, denke ich. Der Ausdruck".{3,30}" sollte das tun.

Ihre Nachnamenanforderungen würden sich in übersetzen

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

aber Sie sollten diese überprüfen. Es gibt viele Nachnamen, die Leerzeichen enthalten.

Jens
quelle
Prüft dies auf Leerzeichen zwischen?
Y_Y
2
Was ist mit O'Connor ? Das Apostroph muss ebenfalls enthalten sein.
Raumfahrer
1
Ziemlich unvollständig. Vorname könnte "Jean-Claude" mit Bindestrich sein. Nachname könnte "D'arc" mit Zitat sein. Und was ist, wenn "François" der Vorname ist?
Bart
1
Was ist mit "Al"? Gültiger Vorname. Nur zwei Buchstaben. Was ist mit chinesischen, russischen, Hindi-Namen? Was ist mit europäischen Namen?
Christian Hujer
Dies würde nicht für viele nicht-englische oder (nicht-lateinische?) Namen
funktionieren
7

Wie Maček sagte:

Vergessen Sie nicht Namen wie:

Mathias d'Arras

Martin Luther King jr.

Hector Wurst-Hausen

und um Fälle wie:

..Mathias

Martin King, Jr.-

Dies wird weitere Fälle abdecken:

^([a-z]+[,.]?[ ]?|[a-z]+['-]?)+$
Asim KT
quelle
Wenn ich meine Zeichenlänge begrenzen möchte, was könnte der Code dafür sein?
G.Abhisek
1
Ja, Martin Luther King Jr. kehrt als Match zurück, ebenso wie König Heinrich der Achte.
Steve Kinzey
7

Ich arbeite an der App, die internationale Pässe (ICAO) validiert. Wir unterstützen nur englische Zeichen. Während die meisten ausländischen nationalen Zeichen durch ein Zeichen im lateinischen Alphabet dargestellt werden können, z. B. durch e, gibt es mehrere nationale Zeichen, für deren Darstellung ein zusätzlicher Buchstabe erforderlich ist, z. B. der deutsche Umlaut, für den dem Buchstaben ein 'e' hinzugefügt werden muss zB ä von ae.

Dies ist der JavaScript-Regex für den Vor- und Nachnamen, den wir verwenden:

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

Die maximale Anzahl von Zeichen im internationalen Pass beträgt bis zu 31 . Wir verwenden maxlength = "31", um Fehlermeldungen besser zu formulieren, anstatt sie in den regulären Ausdruck aufzunehmen.

Hier ist ein Ausschnitt aus unserem Code in AngularJS 1.6 mit Formular- und Fehlerbehandlung:

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
quelle
@danieltakeshi du hast meinen Regex nicht benutzt. Verwenden Sie dies: / ^ [a-zA-Z '.-] * $ /
Alexander Burakevych
5

Ich benutze:

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

Und testen Sie die maximale Länge mit anderen Mitteln

Malix
quelle
5

Diese Regex-Arbeit für mich (wurde in Angular 8 verwendet):

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

Geben Sie hier die Bildbeschreibung ein

Es ist ungültig, wenn: -

  1. Beliebige Leerzeichen am Anfang oder Ende des Namens
  2. Erhaltene Symbole zB @
  3. Weniger als 2 oder mehr als 30

Beispiel ungültiger Vorname (Leerzeichen)

Geben Sie hier die Bildbeschreibung ein

Beispiel gültiger Vorname:

Geben Sie hier die Bildbeschreibung ein

Schneebasen
quelle
6
Was ist mit 'Björk Guðmundsdóttir'?
Mariusz Jamro
4

Der Einfachheit halber können Sie Folgendes verwenden:

(.*)\s(.*)

Das, was mir daran gefällt, ist, dass der Nachname immer nach dem Vornamen steht. Wenn Sie also diese übereinstimmenden Gruppen in eine Datenbank eingeben und der Name John M. Smith ist, ist die erste Gruppe John M. und die 2. Gruppe wird Smith sein.

egekhter
quelle
2
^\p{L}{2,}$

^ bestätigt die Position am Zeilenanfang.

\ p {L} entspricht jeder Art von Buchstaben aus einer beliebigen Sprache

{2,} Quantifizierer - Stimmt so oft wie möglich zwischen 2 und unbegrenzt überein und gibt nach Bedarf etwas zurück (gierig)

$ bestätigt die Position am Ende einer Zeile

Es sollte also ein Name in einer beliebigen Sprache sein, der mindestens 2 Buchstaben (oder Symbole) ohne Zahlen oder andere Zeichen enthält.

Mihail Fernandes
quelle
Beachten Sie, dass einige Zeichen wie 'und - in Namen gültig sind.
Mathijs Segers
1

Also kreieren wir mit dem Kunden diesen verrückten regulären Ausdruck:

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

Für Vor- und Nachnamen gibt es wirklich nur zwei Dinge, nach denen Sie suchen sollten:

  1. Länge
  2. Inhalt

Hier ist mein regulärer Ausdruck:

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

1. Länge

Hier beschränkt {3,20} die Länge der Zeichenfolge auf 3 bis 20 Zeichen.

2. Inhalt

Die Informationen in eckigen Klammern [A-Za-z] ermöglichen Groß- und Kleinbuchstaben. Alle nachfolgenden Symbole (-,.) Sind ebenfalls zulässig.

J Dorrian
quelle
1

Das benutze ich.

Diese Regex akzeptiert nur Namen mit minimalen Zeichen von A-Z a-z ,space and - .

Namensbeispiel:

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

Das Zeichen des Namens ist auf 3 begrenzt. Wenn Sie dies ändern möchten, ändern Sie {3,} in {6,}

([a-zA-Z\-]+){3,}\s+([a-zA-Z\-]+){3,}
Ionut Ionete
quelle
2
Was ist mit ä å ö Ä Å Ö etc? Sehr häufig in schwedischen Namen. Der Nachname O'Conner wird ebenfalls scheitern und doppelte Namen werden ebenfalls Probleme verursachen. Dies ist sehr frustrierend für Menschen, die solche gültigen Namen haben.
Wilt
Was ist mit dem Apostroph in Namen wie O'Connor?
Fogmeister
Mein Gesichtsausdruck gibt Michael Jordan O'Reilly Jr. als gültigen Namen zurück
Steve Kinzey
0

Der folgende Ausdruck funktioniert in jeder von UTF-16 unterstützten Sprache und stellt sicher, dass der Name mindestens zwei Komponenten enthält (dh zuerst + zuletzt), lässt jedoch auch eine beliebige Anzahl von zweiten Vornamen zu.

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

Zum Zeitpunkt dieses Schreibens scheint keine der anderen Antworten alle diese Kriterien zu erfüllen. Even ^\p{L}{2,}$, das am nächsten kommt, ist nicht ausreichend, da es auch mit "unsichtbaren" Zeichen übereinstimmt, z. B. U+FEFF(No Width Space ohne Breite).

Gabriel Somoza
quelle
Übergibt kein Javascript für regexr.com 1) Warnung: Die Unicode-Funktion wird möglicherweise nicht in allen Browsern unterstützt. 2) es erlaubt auch Zahlen in der Regex. Beispiel: Michael Dimmittsasd2123123
Michael Dimmitt
0

Probieren Sie diese Lösungen aus, um maximale Kompatibilität zu erzielen, wie ich bereits hier gepostet habe :

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.
quelle
0

Dies scheint den Job für mich zu erledigen:

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

Eine einfache Funktion mit preg_match in 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');
?>
die Lichter
quelle
-1

Vollständiger Name mit nur einem Leerzeichen:

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

Wenn Sie möchten, dass der gesamte Vorname zwischen 3 und 30 Zeichen ohne Einschränkungen für einzelne Wörter enthält, versuchen Sie Folgendes:

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

Beachten Sie, dass alle ausländischen Buchstaben als é, è, à, ï ausgeschlossen sind.

Wenn Sie möchten, dass das Limit von 3 bis 30 Zeichen auf jedes einzelne Wort angewendet wird, erledigt Jens regexp die Aufgabe.

Thibault Falise
quelle
-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
quelle