我试图在一些PHP代码中集成我从同事(在VB中实现它)收到的正则表达式.正则表达式旨在验证密码是否满足某些复杂性要求,但我的函数总是返回false,即使密码符合我们的复杂性要求.要求是:
至少8个字符,最多20个字符,不能包含空格,必须包含至少一(1)个数字和一(1)个特殊字符.密码中可以使用以下特殊字符: - !@#$%&*()_ + =.?.
我提供的正则表达式是:
ValidationExpression = "^.*(?=.{8,20})(?=.*\d)(?=.*[a-zA-Z])(?=.*[-!@#$%&*()_+=.?])(?!.*\s).*$"
Run Code Online (Sandbox Code Playgroud)
我写的用于验证密码的函数是:
function validatePassword($pass){
$regex = "^.*(?=.{8,20})(?=.*\d)(?=.*[a-zA-Z])(?=.*[-!@#$%&*()_+=.?])(?!.*\s).*$";
return preg_match($regex, $pass);
}
Run Code Online (Sandbox Code Playgroud)
我怀疑问题在于我在做一些愚蠢的事情,但由于正则表达式仍然令我困惑,我不知道问题是什么.有任何想法吗?
您需要将正则表达式括在分隔符中,即
$regex = "/^.*(?=.{8,20})(?=.*\d)(?=.*[a-zA-Z])(?=.*[-!@#$%&*()_+=.?])(?!.*\s).*$/";
Run Code Online (Sandbox Code Playgroud)