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.
- STEVE SMITH (scheitern)
- Stev3 Smith (scheitern)
- STeve Smith (scheitern)
- Steve SMith (scheitern)
- Steve Sm1th (weitergegeben am Steve Sm)
- d'Are to Beaware (weitergegeben an Are to Beaware)
- Jo Blow (bestanden)
- Hyoung Kyoung Wu (bestanden)
- Mike O'Neal (bestanden)
- Steve Johnson-Smith (bestanden)
- Jozef-Schmozev Hiemdel (bestanden)
- O Henry Smith (bestanden)
- Mathais d'Arras (bestanden)
- Martin Luther King Jr. (bestanden)
- Downtown-James Brown (bestanden)
- Darren McCarty (bestanden)
- George De FunkMaster (bestanden)
- Kurtis B-Ball Basketball (bestanden)
- 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