我需要一个用于验证国家名称的正则表达式。我尝试了以下正则表达式:
^([A-Z][a-z]*)+(?:[\\s-][a-zA-Z]+)*$
但允许第二个或第三个名称为低级字符,如:(英国或美国)。正确的值必须是(英国或美国)。我如何修改我的正则表达式。
答案 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"。
一个字母的国家/地区名称明确不(即所有国家/地区名称必须至少包含两个字母)。