我想使用正则表达式来验证名称。名称必须包含名、中间名、姓氏(不一定全部)。但我还想设置一个条件,即名称必须至少包含四个字符。我在这里找到了用于验证全名的正则表达式Java regex to validate full name…,并在这里找到用于检查字符串中是否至少有三个字符(字母)的正则表达式regex,以检查是否至少有3个字符。但我不确定如何将这两者结合起来以获得期望的结果。请帮助我实现所需的Regex,以便我可以完成我的项目。
这可能有点矫枉过正,但是:
([A-Z][a-z]{3,} )([A-Z][a-z]{3,} )?([A-Z][a-z]{3,})
应该能做到。它匹配以大写字母开头的单词,后跟3个或更多小写字母-
编辑:
如果你想支持“花哨”字符(äöü等),你可以阅读这个问题了解详情。使用Java7中带有UNICODE_CHARACTER_CLASS标志的模式,正则表达式应该如下所示:
(\\p{Upper}\\p{Lower}{3,} )(\\p{Upper}\\p{Lower}{3,} )?(\\p{Upper}\\p{Lower}{3,})
以下是我的解决方案:
^[a-zA-Z]{3,}( {1,2}[a-zA-Z]{3,}){0,}$
您可以使用
^[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}$
问题内容: 如何知道该字符串包含至少2个大写字母?例如, 这些是有效的字符串“ Lazy Cat”,“ NOt very lazy cat”。使用Java 1.7。 问题答案: 尝试使用以下正则表达式: or
我需要这样一种验证,即我的字符串必须至少包含一个Unicode字母。将评估角色的角色。isLetter()为true。 比如说我要 我知道我可以使用角色循环。isLetter(),但我只是不想这么做。 这和这个完全不同,因为它只检查英文字母,但在我的例子中是一个Unicode字母。这根本不一样。
问题内容: 我正在尝试查看字符串是否至少包含数字或小写或大写。 我写了这样的东西: 但是我不明白为什么我不能使组合达到36。它们一直保持为0。我在做什么错? 问题答案: 您可以改用Pattern,我认为“ matches”方法会查找整个字符串以匹配正则表达式。 试试下面的代码:
我有这个正则表达式只允许字母数字字符。 如何检查字符串是否至少包含3个字母字符。 我当前的正则表达式, 我想强制执行字符串以确保至少有3个连续的字母字符;
你能帮我拿那个regex吗?