2017-08-03 1 views
-3

Ich brauche eine Regex für Validierungsländer Name. Ich habe versucht, die folgende regex:Regex in Java Ländern Name

^([A-Z][a-z]*)+(?:[\\s-][a-zA-Z]+)*$ 

sondern ermöglicht es dem zweiten oder dritten Namen wie untere Charakter sein: (Vereinigtes Königreich oder USA) .Die richtigen Wert (Vereinigtes Königreich oder USA) sein muss .Wie ich meine ändern Regex.

+0

Ersetzen Sie "[a-zA-Z] +" durch '[A-Z] [a-zA-Z] *' –

+9

Was ist mit Ländernamen, die nicht großgeschriebene Wörter haben, wie "Republik Irland"? Könnte auch Charaktere, Leerzeichen und minimale Interpunktion nicht validieren, aufgrund von alternativen Bezeichnern - das heißt, solange Sie sich nicht an einen bestimmten Standard halten ... – Mena

+3

Oh, und Ländernamen können nur in ihrer englischen Form eingefügt werden ? Ansonsten erwäge Österreich. –

Antwort

1

Versuchen Sie, diese Regex (.NET-Syntax aber Java sollte fast identisch sein):

^[A-Z][a-z]+([A-Z][a-z]+)*$ 

Alle Namen mit einem Großbuchstaben beginnen müssen, so etwas wie "United States" ist gültig, aber " Vereinigte Staaten "ist nicht. Die Schwäche ist natürlich, dass "Vereinigte Staaten von Amerika" nicht als gültig betrachtet wird.

Auch der erste Buchstabe kann die nur Großbuchstaben in dem Wort sein. Das ist, Dinge wie "Vereinigte Staaten" zu verbieten. Natürlich verbietet es auch Sachen wie "USA".

Ein-Buchstaben-Ländernamen sind speziell nicht erlaubt (d. H. Alle Ländernamen müssen mindestens zwei Buchstaben haben).

1

Der zweite Teil ist falsch. Es ermöglicht gemischtes Kapital und Kleinbuchstaben. Nehmen Sie die Großbuchstaben nach vorne heraus und lassen Sie keine oder mehrere kleine Buchstaben zu.

^([A-Z][a-z]*)+(?:[\\s-][A-Z][a-z]*)*$