/**
* < 正则表达式实现 判断字符串没有重复字符 >
* “(.)”表示一个捕获组,
* “\\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表示第三组