有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java国家/地区名称中的正则表达式

我需要一个regex作为我的名字。我尝试了以下正则表达式:

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

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


共 (2) 个答案

  1. # 1 楼答案

    第二部分是错误的。它允许大写和小写字母混合使用。 去掉前面的大写字母,允许零个或多个小写字母

    ^([A-Z][a-z]*)+(?:[\\s-][A-Z][a-z]*)*$ 
    
  2. # 2 楼答案

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

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

    所有名字都必须以大写字母开头,所以像“美国”这样的词是有效的,而“美国”则不是。当然,缺点是“美利坚合众国”被认为是无效的

    此外,第一个字母可以是单词中的大写字母。这是为了禁止像“美国”这样的东西当然,它也禁止像“美国”这样的东西

    仅允许一个字母的国家名称不允许(即所有国家名称必须至少有两个字母)