2011-08-09 17 views
1

我試圖將我從一個同事(在VB中實現它)中得到的正則表達式與一些PHP代碼集成在一起。正則表達式旨在驗證密碼是否滿足某些複雜性要求,但我的函數始終返回false,即使對於符合我們複雜性要求的密碼也是如此。要求是:PHP中正則表達式問題的幫助(我可能在做一些愚蠢的事情)

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

我提供的正則表達式爲:

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

,功能我寫來驗證密碼是:

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

我懷疑,問題是,我做一些愚蠢的,但由於正則表達式仍然困擾着我,我不知道問題是什麼。有任何想法嗎?

+1

它看起來像如果打字機瘋了... – TMS

回答

7

您需要括在delimiters正則表達式,即

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

我知道我在做一些愚蠢的。謝謝您的幫助! –