2012-04-11 4 views
1

사용자가 필드에 암호를 삽입 할 수있는 정규식이 필요합니다. 그러나 허용되는 정규식은 [A-Za-z0-9] ok뿐만 아니라 "space", ".", "_", "-"입니다. 나열된 특수 문자를 허용 할 수는 있지만 사용자가이를 사용하지 못하게하는 방법은 무엇입니까? 반면에 다른 모든 특수 문자는 허용하지 않습니다.Regex in php on password 필드

가능합니까?

  else if ($check_strength && (!preg_match("/[0-9]/", $newpwd) || !preg_match("/[^A-Za-z0-9]/", $newpwd))) { 
      $rcmail->output->command('display_message', $this->gettext('passwordweak'), 'error'); 
     } 

내가이 일에 내 문제를 해결했습니다 :

"/^[A-Za-z0-9\.\-\_]+$/" 
특수 문자를이 코드와

나는 암호의 품질을 확인하지만, 충분하지 내 목표 원인에 대해 내가 관리 할 수 ​​없습니다
+0

: 여기 말했다


은 정규식입니까? 거기에 추가 문자를 추가하기 만하면됩니다. – mario

+1

또한 암호를 제한 할 이유가 없습니다. 허용되는 사용자 이름은 제한 할 수 있지만 비밀번호는 귀하의 비즈니스가 아닙니다. 유용성을 향상시키지 않으며 가장 확실하게 보안을 향상시키지 않습니다. – mario

+0

그게 나를위한 간단한 해결책이다 : "/^[A-Za-z0-9\.\-\_]+$/" – user840718

답변

0
echo preg_match("/^[A-Za-z0-9 ._-]+$/", '-a. s_d'); // 1 

또는 더 단축 :

echo preg_match("/^[\w .-]+$/", '-a. s_d'); // 1 
+0

좋아,이 나를 위해 일했다. 하지만 공간에 대해 설명해 주시겠습니까? 약식 버전은 어디에 있습니까? – user840718

+0

은'\ w' 다음에'.' 앞에옵니다. – webbiedave

1

만약 내가 제대로 이해하고,이 정규식 할 것이라고 :

/^[a-zA-Z \._\-]+$/ 
0

당신은 정규식 사용자의 암호를 "확인"안된다. 측정 항목으로 강도를 확인하고 측정 항목이 "충분히 강하다고"간주되는 것이 좋습니다 (예 : 측정 항목 look at this site).

이렇게하면 사용자는 암호에 임의의 문자를 사용할 수 있습니다. 사용자가 자신의 암호에서 어떤 문자를 선택했는지 상관하지 않아야하며, 어쨌든 암호를 해시 할 것이므로 영향을 미치지 않습니다. 당신은 이미 [문자 클래스] (http://www.regular-expressions.info/charclass.html)가 작동하는 방법을 알고

[\w .-]+