MFC 같은 경우는 정규식을 지원 하지 않는다.
최근에 나온 c++ RegEx 를 쓰면 되지만 기존에 쓰여진 코드에 적용 하려면 라이브러리까지 업데이트 해야 되는
번거로움이 생겨서 로직을 아래와 같이 구현 하여 썼다.
향후 필요한 분이 간혹 있을거 같아서 공유합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | CString sPasswd; sPasswd = "1234abcdccc"; int nCount = sPasswd.GetLength(); //길이체크 if (nCount < 8 && nCount > 13) { AfxMessageBox("비밀번호 길이는 8~12 자리 입니다.", MB_OK, 0); return; } bool bEngFlag=false, bNumFlag=false, bExtFlag=false; char szExt[] = {'!', '@', '#', '$', '%', '^', '&', '*', '(', ')'}; //영문체크 //숫자체크 //특수문자체크 for (int i=0; i<nCount; i++) { char cChk = sPasswd.GetAt(i); if (!bEngFlag) bEngFlag = isalpha(cChk); if (!bNumFlag) bNumFlag = isdigit(cChk); if (!bExtFlag) { for (int j=0; j<sizeof(szExt); j++) { if (cChk == szExt[j]) { bExtFlag = true; break; } } } } if (!bEngFlag || !bNumFlag || !bExtFlag) { AfxMessageBox("비밀번호가 유효하지 않습니다."); return; } else { AfxMessageBox("비밀번호가 유효합니다."); } |