正则表达式用于验证至少包含四个字符的全名



我想使用正则表达式来验证名称。名称必须包含名字、中间名、姓氏(不一定全部(。但我也想强加一个条件,即名称必须至少有四个字符。我在这里找到了正则表达式来验证全名 Java 正则表达式来验证全名......并找到正则表达式来检查此处字符串中至少三个字符(字母(的检查 正则表达式以检查至少 3 个字符。但我不确定如何将这两者结合起来以获得预期的结果。请帮助我实现所需的正则表达式,以便我可以完成我的项目。

您可以使用

^[a-zA-Z]{4,}(?: [a-zA-Z]+){0,2}$

查看正则表达式演示

这将适用于以小写和大写字母开头的名称。

  • ^ - 字符串的开头
  • [a-zA-Z]{4,} - 4 个或更多 ASCII 字母
  • (?: [a-zA-Z]+){0,2} - 0 到 2 次出现空格,后跟一个或多个 ASCII 字母
  • $ - 字符串的结尾。

如果需要将单词限制为以大写字母开头,可以使用

^[A-Z][a-zA-Z]{3,}(?: [A-Z][a-zA-Z]*){0,2}$

这是我的解决方案:

^[a-zA-Z]{3,}( {1,2}[a-zA-Z]{3,}){0,}$
  • ^ -->字符串的开头。
  • [a-zA-Z]{3,} --> 3 个或更多字符。
  • ( {1,2}[a-zA-Z]{3,}({0,} --> 0 个或更多字符的单词。
  • $ -->字符串的结尾。

这可能有点矫枉过正,但是:

([A-Z][a-z]{3,} )([A-Z][a-z]{3,} )?([A-Z][a-z]{3,})

应该做这个伎俩。它匹配以大写字母开头的单词,后跟 3 个或更多小写字母 ->单词的长度为 4。中间名是可选的,姓氏不包含尾随空格。


编辑:
如果你想支持"花哨"字符(äöü等(,你可以阅读这个问题了解细节。使用带有 UNICODE_CHARACTER_CLASS 标志的 Java 7 模式,正则表达式应如下所示:

(\p{Upper}\p{Lower}{3,} )(\p{Upper}\p{Lower}{3,} )?(\p{Upper}\p{Lower}{3,})

最新更新