/**
* < 正則表達式實現 判斷字符串沒有重複字符 >
* 「(.)」表示一個捕獲組,
* 「\\1」表示一個反向引用,也就是說「\\1」與「(.)」這兩個位置的值能夠相同,
* 其餘位置都是".*",表示匹配0~n個任意字符。
* 總的來講,這個正則表達式是匹配出現重複字符的字符串。
*/
public static boolean checkDifferent(String iniString) {
return !iniString.matches(".*(.)(.*\\1).*");
//return !iniString.matches(".*(.).*\\1.*");
//這樣寫更好, 開頭中間結尾三個 .* 表明前中後均可以出現任意多個其餘字符(0~n 個)
}
- .*(.)(.*\\1).* 正則表達式含義解析:
- .* 開頭結尾出現重疊字符
- (.)(.*\\1)
- 「\\1」表示一個反向引用
- 咱們可使用\#(#是組號)來引用前面已定義的組
- 「abcxyzabc」,也可使用反向引用重寫正則表達式,「"(abc)xyz\1"」,
- \1表示第一組(abc)。\2表示第二組,\3表示第三組