我使用此正则表达式检查字段City:
"[a-zA-Z]+[[ '-]?[a-zA-Z]+]*"
但它也适用于以下名称:
桑特 '' '''安吉洛
安德里亚---------巴尔莱塔
我希望单词之间的特殊字符“”,“'”和“ - ”必须是唯一的。例如:
Sant'Angelo-Dei Lombardi
一定是好的,但不是:
Sant'''Angelo --- Dei Lombardi
答案 0 :(得分:4)
您想要使用括号进行重复:
[a-zA-Z]+(?:[ '-][a-zA-Z]+)*
您尝试过的内容([[ '-]?[a-zA-Z]+]
)表示包含[ '-]
,?
,[a-zA-Z]
和+
的字符类,实际上等同于{{1 }}。另一方的子图案以[a-zA-Z?+ '-]
和(
分隔,)
使其不捕获,这是一种轻微的优化。
答案 1 :(得分:0)
使用此代码验证城市:
public static boolean validateCity( String city )
{
return city.matches( "([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)" );
}