入力を検証するための正規表現を書きたいです。入力の形式は次のとおりです。
N. Crystal
O. J. Faucon
A. V. E. David
"^[A-Z. ]*+([a-zA-Z])*$"
動かない。上記の例をどのように一致させることができますか?
.NETは、ネストされた数量詞について正しく不平を言います。冗長です。1つ削除してください*
。+
^[A-Z. ]*([a-zA-Z])*$
さらに、*
空の入力を本当に受け入れたい場合を除いて、ここでの使用はかなり直感的ではないようです。実際には、少なくとも1人のキャラクターを期待していませんか?(グループ化は意味がないため、冗長な括弧を削除することもできます。)
^[A-Z. ]+[a-zA-Z]+$
最後に、これは「BAR...FOOxyz」などのほぼすべてを受け入れます。もっと正確にしたいかもしれません:
^([A-Z]\. )+[a-zA-Z]+$
これで、最初のグループはイニシャル(つまり、大文字の後にドットとスペースが続く)と明示的に一致し、それらの複数に一致しますが、少なくとも1つは一致します。