我正在开发一个应用程序,其中输入字符串必须具有以下属性:
- 包含至少4个唯一字符
- 不包含不可打印的ASCII字符
- 不包含逗号(,)、冒号(:)、等号(=)或空格
我想出了下面的regex,它匹配至少有4个唯一字符的字符串,以及所有可打印的ASCII字符,不包括空格。
^([!-~]+)((?!1)[!-~]+)((?!1|2)[!-~]+)((?!1|2|3)[!-~]+)$
我如何修改它以排除逗号(,),冒号(:),等号(=)?
在Java中可以使用字符类减法。
范围可以看起来像[!-~&&[^,:=]]
^([!-~&&[^,:=]]+)((?!1)[!-~&&[^,:=]]+)((?!1|2)[!-~&&[^,:=]]+)((?!1|2|3)[!-~&&[^,:=]]+)$
Java:
String regex = "^([!-~&&[^,:=]]+)((?!\1)[!-~&&[^,:=]]+)((?!\1|\2)[!-~&&[^,:=]]+)((?!\1|\2|\3)[!-~&&[^,:=]]+)$";
Regex演示