正則 [a-z&&[hij]] 使用 **字符類交集** 語法(`&&`),含義為:**字符類 `a-z` 與字符類 `hij` 的交集**,即 **`h`、`i`、`j` 三個字符之一**。
[a-z]:匹配任意小寫字母。[hij]:匹配 `h`、`i`、`j` 之一。&&:交集運算符,**僅部分正則引擎支持**(Java、Ruby、PCRE 2.10+、.NET 不支持)。[hij]。| 語言/引擎 | 支持交集 `&&` | 替代寫法 |
|---|---|---|
| Java (java.util.regex) | ✅ 是 | 原生支持 |
| Ruby | ✅ 是 | 原生支持 |
| PCRE (PHP, R, etc.) | ✅ 2.10+ 版本 | 舊版本用 `(?=[a-z])[hij]` 正向先行斷言模擬 |
| JavaScript (ECMAScript) | ❌ 不支持 | 直接寫 [hij] 或 (?=[a-z])[hij] |
| .NET (C#, VB.NET) | ❌ 不支持 | 直接寫 [hij] 或 [hij] 交集邏輯在代碼層實現 |
| Python (re) | ❌ 不支持 | 直接寫 [hij] 或集合運算 set('abcdefghijklmnopqrstuvwxyz') & set('hij') |
| Go (re2) | ❌ 不支持 | 直接寫 [hij] |
String regex = "[a-z&&[hij]]";
System.out.println("h".matches(regex)); // true
System.out.println("i".matches(regex)); // true
System.out.println("j".matches(regex)); // true
System.out.println("a".matches(regex)); // false
System.out.println("hello".matches(regex)); // false (整串匹配)
[hij]:可讀性最高、全引擎兼容、性能最佳。正則交集語法屬「進階/小眾」特性,**能用簡單字符類解決時,絕不使用交集語法**,降低認知負荷與移植風險。