Java 匹配两个连续辅音的正则表达式

Java regular expression matching two consecutive consonants

我试图只匹配具有两个连续辅音的字符串。但无论我给 myString 什么输入,它都不会计算为真,所以我不得不假设我的正则表达式的语法有问题。有什么想法吗?

if (Pattern.matches("([^aeiou]&&[^AEIOU]){2}", myString)) {...}

附加信息:

编辑: 在仔细阅读这些答案并进行更多测试后,我最终使用的代码是

if (myString.matches("(?i)[b-z&&[^eiou]]{2}")) {...}

[^aeiou] 也匹配非字母字符,因此您应该使用不同的模式:

Pattern rx = Pattern.compile("[bcdfghjklmnpqrstuvwxyz]{2}", Pattern.CASE_INSENSITIVE);
if (rx.matches(myString)) {...}

如果您想将 && 用于交叉路口,您可以这样做:

"[a-z&&[^aeiou]]{2}"

Demo.

要使用字符 class 交集,您需要将语法包含在方括号表达式中。下面匹配既是小写字母又不是元音字母的字符。

[a-z&&[^aeiou]]{2}