包含至少4个唯一可打印ASCII字符(不包括少数特殊字符)的字符串的正则表达式



我正在开发一个应用程序,其中输入字符串必须具有以下属性:

  • 包含至少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演示

最新更新