我使用这个正则表达式来检查字段 City:
"[a-zA-Z]+[[ '-]?[a-zA-Z]+]*"
但它也适用于以下名称:
圣'''''安吉洛
安德里亚---------巴列塔
我希望单词之间的特殊字符“”,“”和“-”必须是一个且只有一个。例如:
圣天使-代隆巴第
它必须是好的,但不是:
圣天使---Dei Lombardi
您想使用括号进行重复:
[a-zA-Z]+(?:[ '-][a-zA-Z]+)*
您尝试的 ( [[ '-]?[a-zA-Z]+]
) 表示一个字符类,包含[ '-]
、和?
,实际上与. 另一个上的子模式用and分隔,这使得它不被捕获,这是一个轻微的优化。[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]+)" );
}