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 ).
regex
validation
Hellnar
quelle
quelle
Antworten:
Vergessen Sie nicht Namen wie:
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
quelle
.
(Dezimalpunkt / Punkt / Punkt), da es sich um den regulären Ausweis handelt =)őŐűŰ
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 ,.'-]+$/i
umwandelt , und schreiben Sie dann den regulären Ausdruck.陳大文
kein gültiger Name?/^[\p{L}'][ \p{L}'-]*[\p{L}]$/u
jedoch ziemlich verzeihend.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.
quelle
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:
Unterstützte Charaktere:
quelle
^[\w'\-,.]*[^_!¡?÷?¿\/\\+=@#$%ˆ&*(){}|~<>;:[\]]*$
^[^0-9_!¡?÷?¿/\\+=@#$%ˆ&*(){}|~<>;:[\]]{2,}$
Ich habe einen benutzerdefinierten regulären Ausdruck für Namen erstellt:
Ich habe diese Art von Namen ausprobiert und festgestellt, dass sie perfekt funktionieren
Mein RegEx sieht so aus:
MVC4-Modell:
Bitte beachten Sie das Doppel
\\
für Escape-ZeichenFür diejenigen unter Ihnen, die neu bei RegEx sind, dachte ich, ich würde eine Erklärung hinzufügen.
quelle
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:
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.
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
quelle
Vorname wäre
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
aber Sie sollten diese überprüfen. Es gibt viele Nachnamen, die Leerzeichen enthalten.
quelle
Wie Maček sagte:
Vergessen Sie nicht Namen wie:
und um Fälle wie:
Dies wird weitere Fälle abdecken:
quelle
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:
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:
quelle
Ich benutze:
Und testen Sie die maximale Länge mit anderen Mitteln
quelle
Diese Regex-Arbeit für mich (wurde in Angular 8 verwendet):
Es ist ungültig, wenn: -
Beispiel ungültiger Vorname (Leerzeichen)
Beispiel gültiger Vorname:
quelle
Der Einfachheit halber können Sie Folgendes verwenden:
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.
quelle
^ 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.
quelle
Also kreieren wir mit dem Kunden diesen verrückten regulären Ausdruck:
quelle
Für Vor- und Nachnamen gibt es wirklich nur zwei Dinge, nach denen Sie suchen sollten:
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.
quelle
Das benutze ich.
Diese Regex akzeptiert nur Namen mit minimalen Zeichen von
A-Z a-z ,space and -
.Namensbeispiel:
Das Zeichen des Namens ist auf 3 begrenzt. Wenn Sie dies ändern möchten, ändern Sie {3,} in {6,}
quelle
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.
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).quelle
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>
quelle
Dies scheint den Job für mich zu erledigen:
quelle
Eine einfache Funktion mit preg_match in PHP
quelle
Vollständiger Name mit nur einem Leerzeichen:
quelle
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:
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.
quelle
quelle