java国家/地区名称中的正则表达式
我需要一个regex作为我的名字。我尝试了以下正则表达式:
^([A-Z][a-z]*)+(?:[\\s-][a-zA-Z]+)*$
但允许第二个或第三个名称使用较低的字符,如:(英国或美国)。正确的值必须为(英国或美国)。如何修改正则表达式
你可以在下面搜索框中键入要查询的问题!
我需要一个regex作为我的名字。我尝试了以下正则表达式:
^([A-Z][a-z]*)+(?:[\\s-][a-zA-Z]+)*$
但允许第二个或第三个名称使用较低的字符,如:(英国或美国)。正确的值必须为(英国或美国)。如何修改正则表达式
# 1 楼答案
第二部分是错误的。它允许大写和小写字母混合使用。 去掉前面的大写字母,允许零个或多个小写字母
# 2 楼答案
试试这个正则表达式(使用.NET语法,但Java应该几乎相同):
所有名字都必须以大写字母开头,所以像“美国”这样的词是有效的,而“美国”则不是。当然,缺点是“美利坚合众国”被认为是无效的
此外,第一个字母可以是单词中的仅大写字母。这是为了禁止像“美国”这样的东西当然,它也禁止像“美国”这样的东西
仅允许一个字母的国家名称不允许(即所有国家名称必须至少有两个字母)