正则表达式城市名称

时间:2012-11-07 23:09:44

标签: java regex

我使用此正则表达式检查字段City:

"[a-zA-Z]+[[ '-]?[a-zA-Z]+]*"

但它也适用于以下名称:

  

桑特 '' '''安吉洛

     

安德里亚---------巴尔莱塔

我希望单词之间的特殊字符“”,“'”和“ - ”必须是唯一的。例如:

  

Sant'Angelo-Dei Lombardi

一定是好的,但不是:

  

Sant'''Angelo --- Dei Lombardi

2 个答案:

答案 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]+)" );
}