2013-07-11 136 views
-7

我對PHP完全陌生。我需要幫助編寫一個驗證密碼的正則表達式。密碼長度必須至少爲8個字符,以字母開頭,以數字結尾,且不區分大小寫。第一個和最後一個之間的字符可以是數字,下劃線或符號。PHP正則表達式驗證密碼

任何幫助將不勝感激。

+3

看一看[此](http://stackoverflow.com/q/11873990/2493918)問題。 –

+0

哪些符號可以用於中間字符? – Legion

+4

你爲什麼強迫一封信作爲第一個字符?並限制我可以使用字母,數字,下劃線和符號的字符集?我不能使用UTF-8字符嗎? –

回答

0

查看manual中的preg_match() PHP函數。

快速示例:

<?php 
// Check if the string is at least 8 chars long 
if (strlen($password) < 8) 
{ 
    // Password is too short 
} 


// Make the password "case insensitive" 
$password = strtolower($password); 


// Create the validation regex 
$regex = '/^[a-z][\[email protected]#$%]+\d$/i'; 

// Validate the password 
if (preg_match($regex, $password)) 
{ 
    // Password is valid 
} 
else 
{ 
    // ... not valid 
} 

­

Regex Explanation: 
^   => begin of string 
    [a-z]  => first character must be a letter 
    [\[email protected]#$%]+ => chars in between can be digit, underscore, or symbol 
    \d   => must end with a digit 
    $   => end of string 
    /i   => case insesitive 
+1

請不要做strtolower()位 - 它會讓你的密碼更不安全。 – Spudley

+0

@Spudley真的,只是包括它,因爲user2573918問它。但這確實是一個安全問題。 –

2

/^[A-Za-z][0-9[:punct:]]{6,}[0-9]$/應該工作

此說:

  • 的第一個字符必須是字母
  • 中間人物必須是數字或符號(下劃線含稅)
  • 必須有至少6箇中間字符
  • 最後一個字符必須是數字