Java 正则表达式城市名称
我使用此正则表达式检查field City:Java 正则表达式城市名称,java,regex,Java,Regex,我使用此正则表达式检查field City: "[a-zA-Z]+[[ '-]?[a-zA-Z]+]*" 但它也适用于以下名称: 圣安杰洛 安德里亚------巴列塔 我希望单词之间的特殊字符“、”和“-”必须是一个且只有一个。例如: 圣安杰洛-迪伦巴第酒店 它必须是好的,但不是: 圣安杰洛——伦巴第 您希望在重复中使用括号: [a-zA-Z]+(?:[ '-][a-zA-Z]+)* 您尝试的(['-]?[a-zA-Z]+])意味着一个字符类,包含['-]、?、[a-zA-Z]和+,实际上与
"[a-zA-Z]+[[ '-]?[a-zA-Z]+]*"
但它也适用于以下名称:
圣安杰洛
安德里亚------巴列塔
我希望单词之间的特殊字符“、”和“-”必须是一个且只有一个。例如:
圣安杰洛-迪伦巴第酒店
它必须是好的,但不是:
圣安杰洛——伦巴第
您希望在重复中使用括号:
[a-zA-Z]+(?:[ '-][a-zA-Z]+)*
您尝试的(
['-]?[a-zA-Z]+]
)意味着一个字符类,包含['-]
、?
、[a-zA-Z]
和+
,实际上与[a-zA-Z?+'-]
等效。另一个had上的子模式用(
和)
分隔,?:
使其不捕获,这是一个轻微的优化。是否要使用括号重复:
[a-zA-Z]+(?:[ '-][a-zA-Z]+)*
您尝试的(
['-]?[a-zA-Z]+]
)意味着一个字符类,包含['-]
、?
、[a-zA-Z]
和+
,实际上与[a-zA-Z?+'-]
等效。另一个had上的子模式用(
和)
分隔,?:
使其不捕获,这是一个轻微的优化。使用此代码验证城市:
public static boolean validateCity( String city )
{
return city.matches( "([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)" );
}
使用此代码验证城市:
public static boolean validateCity( String city )
{
return city.matches( "([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)" );
}
美国人不会喜欢你的,你的regexp不接受华盛顿特区。:)这是真的。经过一点改变,现在它也喜欢美国人:)美国人不会喜欢你,你的regexp不接受华盛顿特区。:)这是真的。经过一点改变,现在它也喜欢美国人:)那些名字中有数字字符的罕见(但有效)城市呢?@noogrub好吧,在两个字母类中添加
0-9
。那些名字中有数字字符的罕见(但有效)城市呢?@noogrub好吧,将0-9
添加到两个字母字符类中。