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

标签 java regex

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

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

最佳答案

你可以使用这个正则表达式:

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

它使用负向前查找来确保字符串中不超过 2 个大写字符,然后匹配一个字母序列,后跟一个空格,然后是另一个字母序列。

Demo on regex101

关于java - 如果正则表达式包含所有字母且整个字符串中仅包含 2 个大写字母,则返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53965871/

相关文章:

regex - 替换模式内的空格

arrays - 迭代 JSON 数组并找到所有匹配的值

python - Python CSV 行和列中的精确匹配

java - 使用新的 Java 14 Record 功能,是否可以为同一个 Record 创建多个构造函数?

Java 二进制兼容性问题 : sun. font.FontManager 类成为接口(interface)

Java do-while 详细信息

java - 检索 jscrollpane 中包含的 jtable 的已更改内容

正则表达式 - 接受 AZ 不包括固定长度的一些字母

xml - 使用 linux 实用程序从文件中提取正则表达式。在单独的行上打印每个匹配项

java - 进行 JSON 格式的 Perl API 调用时出现问题