この正規表現を使用して、フィールドCityを確認します。
"[a-zA-Z]+[[ '-]?[a-zA-Z]+]*"
ただし、次のような名前にも適しています。
サント'''''アンジェロ
アンドリア---------バルレッタ
単語間の特殊文字「"、"'」および「-」は1つだけである必要があります。例えば:
サンタンジェロデイロンバルディ
それは良いはずですが、そうではありません:
サンタンジェロ---デイロンバルディ
繰り返しに括弧を使用したい:
[a-zA-Z]+(?:[ '-][a-zA-Z]+)*
あなたが試したこと ( ) は、 、、および[[ '-]?[a-zA-Z]+]
を含む文字クラスを意味し、事実上 と同等です。もう一方のサブパターンは と で区切られており、によってキャプチャされなくなりますが、これはわずかな最適化です。[ '-]
?
[a-zA-Z]
+
[a-zA-Z?+ '-]
(
)
?:
次のコードを使用して都市を検証します。
public static boolean validateCity( String city )
{
return city.matches( "([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)" );
}