【问题标题】:Regex in java countries nameJava国家名称中的正则表达式
【发布时间】:2017-08-03 14:10:51
【问题描述】:

我需要一个正则表达式来验证国家/地区名称。我尝试了以下正则表达式:

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

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

【问题讨论】:

  • [A-Z][a-zA-Z]*替换[a-zA-Z]+
  • 国名中包含非大写单词的情况如何,例如“Republic of Ireland”?由于替代标识符,最好不要验证字符、空格和最小标点符号 - 也就是说,只要您不遵守特定标准......
  • 哦,国名只能以英文形式插入吗?否则考虑Österreich
  • “法兰西共和国”怎么样?
  • 只有英文格式,否则将是一场灾难。我在想link,这是不正确的。我必须让和降低字符,但下不能跟在上

标签: java regex validation


【解决方案1】:

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

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

所有名称都必须以大写字母开头,因此“United States”之类的名称有效,但“United States”无效。当然,缺点是“美利坚合众国”不被认为是有效的。

另外,第一个字母可以是单词中的唯一大写字母。这是为了禁止“美国”之类的东西。当然,它也禁止使用“USA”之类的内容。

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

【讨论】:

    【解决方案2】:

    第二部分不正确。它允许混合大小写字母。 去掉前面的大写字母,允许零个或多个小写字母。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多