我想使用正则表达式来验证名称。名称必须包含,名字,中间名,姓氏(不一定全部)。但我还想强加一个条件,即名称必须至少为四个字符。我找到了正则表达式验证全名Java Regex to Validate Full Name ...并找到正则表达式来检查字符串中至少有三个字符(字母),Regex to check for at least 3 characters。但我不确定如何将这两者结合起来以获得理想的结果。请帮助我实现所需的正则表达式,以便我可以完成我的项目。
答案 0 :(得分:2)
您可以使用
^[a-zA-Z]{4,}(?: [a-zA-Z]+){0,2}$
请参阅regex demo
这适用于以低位和高位字母开头的名称。
^
- 字符串开头[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}$
答案 1 :(得分:0)
可能有点矫枉过正,但是:
([A-Z][a-z]{3,} )([A-Z][a-z]{3,} )?([A-Z][a-z]{3,})
应该做的伎俩。
它匹配以大写字母开头,后跟3个或更多小写字母的单词 - >单词长度为四。中间名是可选的,姓氏不包含尾随空格。
修改强>
如果你想支持“花哨”字符(äöü等),你可以阅读this question了解详情。
使用带有UNICODE_CHARACTER_CLASS标志的Java 7模式,正则表达式应如下所示:
(\\p{Upper}\\p{Lower}{3,} )(\\p{Upper}\\p{Lower}{3,} )?(\\p{Upper}\\p{Lower}{3,})