in vielen Regex-Dialekte, in einer Zeichenklasse, ein einfacher Bindestrich/minus muss zuerst oder zuletzt sein:
/^[-a-zA-ZåäöÅÄÖ\s]+$/
/^[a-zA-ZåäöÅÄÖ\s-]+$/
negierte Zeichenklassen: zu
/^[^-a-zA-ZåäöÅÄÖ\s]+$/
/^[^a-zA-ZåäöÅÄÖ\s-]+$/
Mit fast eckiger Klammer, legen Sie die eckige Klammer an der Front und den Bindestrich am Ende:
/^[]a-zA-ZåäöÅÄÖ\s-]+$/
Und wenn Sie ausschließen beide schließen eckige Klammern und Bindestriche, dann:
/^[^]a-zA-ZåäöÅÄÖ\s-]+$/
Für die Frage könnte eine Interpretation lauten: Sie möchten auf alphabetische Zeichen um Bindestriche herum bestehen und nur Leerzeichen am Anfang und am Ende zulassen, und Sie möchten möglicherweise Apostrophen zulassen, bei denen Sie Bindestriche zulassen und konsekutive vermeiden möchten Bindestriche oder Apostrophe.
/^\s*[a-zA-ZåäöÅÄÖ]*([a-zA-ZåäöÅÄÖ]+[-'][a-zA-ZåäöÅÄÖ]+)*\s*$/
Warnung: regex formal mit Perl, JavaScript nicht getestet.
Beginn der Zeichenfolge, null oder mehr Leerzeichen; null oder mehr alphabetische Zeichen; Null oder mehr Folgen von "einem oder mehreren Buchstaben plus Bindestrich oder Apostroph und einem oder mehreren Buchstaben", gefolgt vom Ende des Strings. Sie könnten einen zusätzlichen Satz Klammern nach dem ersten \s*
und vor dem zweiten \s*
schlagen, um den vollständigen Namen zu erfassen.
Für Anna-nicole
würde der erste Alpha-Ausdruck Ann
entsprechen und der andere Alpha-Ausdruck würde a-nicole
entsprechen. Für Anonymous
würde der erste Ausdruck der gesamten Zeichenfolge entsprechen, der zweite wäre leer. Für O'Reilly
wäre der erste Ausdruck leer und der zweite würde der gesamten Zeichenfolge entsprechen. Namen wie "C - d" und "Who'Me" würden abgelehnt (kein wiederholter Bindestrich oder Apostroph erlaubt). Es würde Smith-Jones-and-Son
als einen Namen und Smith-And-O'Reilly
erlauben. Es werden keine führenden oder abschließenden Bindestriche oder Apostrophe erlaubt.
Wenn Sie "Vorname Nachname" zulassen möchten, benötigen Sie zwei Chargen des "Kerns" der obigen Regex mit \s+
dazwischen. Usw.
Sie erlauben derzeit Leerzeichen an beiden Enden - möchten Sie sie auch begrenzt? Und willst du "Nancy - O'Hara" (mit den Leerzeichen um die Striche) verbieten, und was ist mit dem Apostroph im Nachnamen? –
@ Jonathan: Ja das würde ich auch gerne, jetzt wo du es erwähnst. –