正则表达式具有三种字符类型中的两种

时间:2018-10-31 12:13:00

标签: regex

我想测试一个可能包含三种字符的字符串:

1。字母(大写或小写) 2.数字 3.特殊字符(非字母数字字符)

我想用正则表达式测试字符串是否包含上述三种字符类型中的任何两种(且不少于8个字符),现在我具有以下正则表达式

^(?=.*0-9)(?=.*[a-zA-Z])(?=.*[^A-Za-z0-9]).{8,}$

但是,这似乎测试了字符串是否包含所有三种字符类型,而不是三种字符中的任何两种。

顺便说一句,我正在寻找一个纯正则表达式解决方案,我知道可以使用以下类似方法轻松完成此检查

types = 0;
if contains numbers then types++;
if contains alphabetic letters then types++;
if contains non-alphanumeric letters then types++;
if types >= 2 then pass; else fail;

但是我只是想知道是否可以通过一行正则表达式来完成。

0 个答案:

没有答案