正则表达式验证至少有四个字符的全名

Regex to validate Full name having atleast four characters

我想使用正则表达式来验证名称。名称必须包含名字、中间名、姓氏(不一定全部)。但我也想强加一个条件,名称必须至少有四个字符。我在这里 Java Regex to Validate Full Name ... and found regex to check for checking of at least three chars (alphabets) in a string here Regex to check for at least 3 characters 找到了用于验证全名的正则表达式。但我不确定如何将这两者结合起来以获得所需的结果。请帮助我实现所需的正则表达式,以便我可以完成我的项目。

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

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

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


编辑:
如果您想支持 "fancy" 个字符(äöü 等),您可以阅读 this question 了解详细信息。 使用 Java 7 中带有 UNICODE_CHARACTER_CLASS 标志的模式,正则表达式应如下所示:

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

您可以使用

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

regex demo

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

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

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

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