Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [RegEx?] Gültiger Vorname (https://www.delphipraxis.net/137974-%5Bregex-%5D-gueltiger-vorname.html)

Die Muhkuh 1. Aug 2009 11:11


[RegEx?] Gültiger Vorname
 
Hi,

ich versuche gerade per RegEx (in PHP per preg_match) einen Vornamen zu matchen. Als gültiger Vorname ist definiert:
  • Es darf keine Zahl vorkommen
  • Leerzeichen und Bindestrich sind erlaubt
  • Alle Buchstaben von A bis Z sind erlaubt

Allerdings matcht meine RegEx auch Dinge wie:
  • -Hans Peter
  • 234Peter
  • 23Pet32er (hier kommt als Ergebnis Pet heraus)
  • 23-Hans-Joac32him (hier kommt als Ergebnis Hans-Joac heraus)

Das sollte natürlich nicht sein.

Meine RegEx sieht bisher so aus:

#[a-zA-Z]+(?(?=\s?-?[a-zA-Z]+)\s?-?[a-zA-Z]+)#

Vielleicht ist auch RegEx der falsche Ansatz? Ich könnte auch einfach alle Buchstaben in einen gültigen Pool werfen und sobald ein Zeichen nicht in diesem Pool ist, ist der Name falsch, aber vielleicht geht es auch per RegEx.

Grüße :hi:

Khabarakh 1. Aug 2009 11:59

Re: [RegEx?] Gültiger Vorname
 
Code:
/^[a-zA-Z -]+$/
Das würde deine Definition erfüllen (durch die Verankerung mit ^ und $ kannst du erzwingen, dass der gesamte String gematcht werden muss). Mit Umlauten etc. siehts allerdings schlecht aus ;) , da würde ich lieber folgendes probieren:
Code:
/^\pL+$/u
Dein erstes Gegenbeispiel matchen allerdings beide, denn rein von den Zeichen her wäre es ja valide. Du willst wohl eher "ein oder mehrere Wörter, die durch Bindestrich oder Leerzeichen getrennt sind":
Code:
/^(\pL+[ -])*\pL+$/u
Das matcht auch "Hans-Joachüm Maria".

himitsu 1. Aug 2009 12:33

Re: [RegEx?] Gültiger Vorname
 
also mal aufgeteilt
[A-ZÄÜÖ]+[a-zßäüö]* ist erlaubt - für deutsche Namen - klein und eventuell der 1. Buchstabe groß)
Leerzeichen und "-" nur zwischen buchstaben

und das müßte man nun irgendwie zusammenbauen

Die Muhkuh 1. Aug 2009 12:55

Re: [RegEx?] Gültiger Vorname
 
Hi,

ich hab Deine letzte RegEx bei zwei verschiedenen Seiten getestet und beide spucken mir "PCRE does not support \p \P \l \L" an den Kopf.

http://www.solmetra.com/scripts/regex/index.php
http://www.regex-tester.de/regex.html

Ich bin gerade am Googlen, ob das wirklich an PCRE liegt oder ob neuere Versionen das unterstützen.

himitsu 1. Aug 2009 13:00

Re: [RegEx?] Gültiger Vorname
 
das \pL könnte für Letter stehn ... wäre och logisch und dann dürftest du auch [A-Za-zßäüö] dafür nehmen können

Khabarakh 1. Aug 2009 13:59

Re: [RegEx?] Gültiger Vorname
 
Zitat:

Zitat von Die Muhkuh
ich hab Deine letzte RegEx bei zwei verschiedenen Seiten getestet und beide spucken mir "PCRE does not support \p \P \l \L" an den Kopf.

Der zweite Link funktioniert bei mir, allerdings nur ohne u-Modifier: http://www.regex-tester.de/uc_711_de.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz