正则表达式允许至少一个特殊字符,一个大写,一个小写(以任何顺序)

Swe*_*eta 11 regex

任何人都可以帮助我使用正则表达式来允许至少一个特殊字符,一个大写,一个小写.

这是我到目前为止:

 ^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$
Run Code Online (Sandbox Code Playgroud)

但似乎只按"特殊字符","大写字母","小写字母"的顺序匹配字符.

任何帮助是极大的赞赏

Tim*_*ker 23

你的正则表达式

^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$
Run Code Online (Sandbox Code Playgroud)

实际应该工作得很好,但你可以通过删除第一个来做得更好.*:

^(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$
Run Code Online (Sandbox Code Playgroud)

将匹配包含至少一个小写和一个大写ASCII字符的至少8个字符的任何字符串,以及该集合中的至少一个字符@#$%^&+=(以任何顺序).


Bha*_*hta 7

这是您可以使用的功能。

function checkRegex(string) {
    var checkSpecial = /[*@!#%&()^~{}]+/.test(string),
        checkUpper = /[A-Z]+/.test(string),
        checkLower = /[a-z]+/.test(string),
        r = false;

        if (checkUpper && checkLower && checkSpecial) {
            r = true;
        }

        return r;

        }
Run Code Online (Sandbox Code Playgroud)

然后检查它是真的还是假的。

var thisVal = document.getElementById('password').value;
var regex = checkRegex(thisVal);
Run Code Online (Sandbox Code Playgroud)

如果var regex是,true则条件满足。