2013-07-11 4 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이어야 편지 있어야합니다 중간 문자
  • 마지막 문자는 숫자 여야합니다.