테스트 사이트 - 개발 중인 베타 버전입니다

정규표현식 소모임 창설을 축하합니다. (비밀번호 규칙 정규식 포함)

· 4년 전 · 1320 · 7

첫 글인데 정규표현식 하나 올리고 가겠습니다.

작년에 프로젝트하면서 비밀번호 규칙에 관한 정규식을 작성할 일이 있어서 만든 코드입니다.

[code]

   

/**

 * @namespace User:passwordValidation

 * 입력 받은 패스워드를 정규식으로 검증한다.

 */

public function passwordValidation($password):? string

{

    $regex = [

        "/^(?=.*[A-Za-z])(?=.*\d)(?=.*[`~!@#$%*?&\^\(\)\-_\+\=])[A-Za-z\d`~!@#$%*?&\^\(\)\-_\+\=]{8,}$/",

        "/(abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz)/",

        "/(ABC|BCD|CDE|DEF|EFG|FGH|GHI|HIJ|IJK|JKL|KLM|LMN|MNO|NOP|OPQ|PQR|QRS|RST|STU|TUV|UVW|VWX|WXY|XYZ)/",

        "/(012|123|234|345|456|567|678|789)/",

        "/(\w)\1\1\1*/"

    ];

    $message = null;

 

    foreach ($regex as $i => $pattern) {

        if ($i == 0 && !preg_match($pattern, $password)) {

            $message = '숫자, 영문자, 특수문자가 최소 한 글자씩 포함한 8자리 이상의 문자열만 가능합니다.';

            break;

        } else if ($i > 0 && preg_match($pattern, $password)) {

            $message = match($i) {

                1 => '연속된 소문자가 3자리 연속해서 사용될 수 없습니다. 예 (abc, xyz)',

                2 => '연속된 대문자가 3자리 연속해서 사용될 수 없습니다. 예 (ABC, XYZ)',

                3 => '연속된 숫자 3자리 연속해서 사용될 수 없습니다. 예 (123, 789)',

                4 => '똑같은 문자가 3자리 연속해서 사용될 수 없습니다. 예 (aaa, 111)'

            };

            break;

        }

    }

    return $message;

}

[/code]

요구 조건은 아래와 같았습니다.

 

1. 최소 한 글자의 숫자가 포함되어야함
2. 최소 한 글자의 영문자가 포함되어야함
3. 최소 한 글자의 특수문자[`~!@#$%^&*()-_=+]가 포함되어야함
4. 최소 8 글자이상의 문자열이어야함
5. 연속된 소문자가 3자리 연속해서 사용될 수 없음
6. 연속된 대문자가 3자리 연속해서 사용될 수 없음
7. 연속된 숫자가 3자리 연속해서 사용될 수 없음
8. 똑같은 문자가 3자리 연속해서 사용될 수 없음
9. 기존 비밀번호와 동일하게 사용할 수 없음

 

좀 더 아름다운 방식이 있었을거 같긴한데 제가 할 수 있는 최선의 방식이었습니다.

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 7개

첫글 감사 드리구요. 눈이 침침하여 나중에 보겠습니다. 하하~
@리자 게시글 작성할 때 소스코드 하이라이트 하는 법을 몰라서 ^^;; 이거 뭐 방법없습니까?
@gshn 차차 해결해야겠습니다.
지금 쓰는 highlight 플러그인이 오래되어서요. ㅎ
4년 전
감사합니다.
4년 전
이 게시판은 소스 미학주의를 지향하는 분들의 모임이네요.
4년 전
아름답네요. ㅎㅎㅎ

[...code...]~[.../code...] 로 묶으시면 하이라이팅 됩니다. ㅎㅎㅎ
쩜 세개 빼구요.
오오, ☆☆ 코드코드, 끄저끄적 ^^

게시글 목록

번호 제목
98
97
91
87
80
76
75
72
71
70
69
68
62
61
60
57
55
54
49
40
36
33
32
31
29
21
11
8
4
1