正则表达式在java国家名称

时间:2017-08-03 14:10:52

标签: java regex validation

我需要一个用于验证国家名称的正则表达式。我尝试了以下正则表达式:

^([A-Z][a-z]*)+(?:[\\s-][a-zA-Z]+)*$

但允许第二个或第三个名称为低级字符,如:(英国或美国)。正确的值必须是(英国或美国)。我如何修改我的正则表达式。

2 个答案:

答案 0 :(得分:1)

第二部分不正确。它允许混合资本和小写字母。 取出前面的大写字母,允许零个或多个小写字母。

^([A-Z][a-z]*)+(?:[\\s-][A-Z][a-z]*)*$ 

答案 1 :(得分:1)

试试这个正则表达式(使用.NET语法,但Java应该几乎相同):

^[A-Z][a-z]+( [A-Z][a-z]+)*$

所有名字都必须以大写字母开头,所以像#34;美国"是有效但是"美国"不是。当然,缺点是"美利坚合众国"并不被认为是有效的。

此外,第一个字母可以是单词中仅大写字母。这是为了禁止像联合国这样的东西。"当然,它也禁止像#34; USA"。

一个字母的国家/地区名称明确(即所有国家/地区名称必须至少包含两个字母)。