帮助解决PHP中的正则表达式问题(我可能正在做一些愚蠢的事情)

时间:2011-08-09 20:14:27

标签: php regex

我试图在一些PHP代码中集成我从同事(在VB中实现它)收到的正则表达式。正则表达式旨在验证密码是否满足某些复杂性要求,但我的函数总是返回false,即使密码符合我们的复杂性要求。要求是:

  

最少8个字符,最多20个字符,不能包含空格,必须包含至少一(1)个数字和一(1)个特殊字符。密码中可以使用以下特殊字符: - ! @#$%& *()_ + =。 ?

我提供的正则表达式是:

ValidationExpression = "^.*(?=.{8,20})(?=.*\d)(?=.*[a-zA-Z])(?=.*[-!@#$%&*()_+=.?])(?!.*\s).*$"

我写的用于验证密码的函数是:

function validatePassword($pass){
$regex = "^.*(?=.{8,20})(?=.*\d)(?=.*[a-zA-Z])(?=.*[-!@#$%&*()_+=.?])(?!.*\s).*$";
return preg_match($regex, $pass);
}

我怀疑问题在于我在做一些愚蠢的事情,但由于正则表达式仍然困扰着我,我不知道问题是什么。有什么想法吗?

1 个答案:

答案 0 :(得分:7)

您需要将正则表达式括在delimiters中,即

$regex = "/^.*(?=.{8,20})(?=.*\d)(?=.*[a-zA-Z])(?=.*[-!@#$%&*()_+=.?])(?!.*\s).*$/";