正则表达式返回行,如果它包含所有字母并且整个字符串中仅包含2个大写字母

时间:2018-12-29 01:04:36

标签: java regex

我正在调用一个函数来确定输入字符串是否仅包含 2个仅由字母组成的单词。很好因此,“ 123套房”将失败,而“疯狂女孩”将通过。但是,我需要确保连续的大写字母不会通过,例如“ AAA Bird”,我只想在整个字符串中允许两个大写。 以下是我目前所拥有的。任何建议将不胜感激。我对正则表达式非常陌生。

else if (line.matches("\\s*[A-Za-z]+\\s+[A-Za-z]+\\s*"))
        {
            getName();
        } 

2 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式:

^(?!(.*[A-Z]){3,})[a-zA-Z]+ [a-zA-Z]+$

它使用否定前瞻来确保字符串中最多包含2个大写字符,然后匹配一个字母序列,一个空格,一个字母序列。

Demo on regex101

答案 1 :(得分:0)

我建议将此正则表达式用于unicode字母:

^(?!(?:.*\p{Lu}){3,})\p{L}+\p{Zs}\p{L}+$