이번 프로젝트에서 회원정보를 다루는데 있어 닉네임에 대한 유효성 검사를 실시할 때에 문제점이 발견 되었다.
나는 알파벳or한글이 들어가며 +,-,_ 의 세가지 특수문자만 허용할 수 있도록 적용하기 위해서
a-zA-Z0-9가-힣+-_ 에 대해서 유효성 검사를 실시했다.
근데 왠걸... VACode의 썬더클라이 언트를 사용해서 가입을 실시하는데 어떤건 되고 어떤건 안되고 문제가 발생했다.
따라서 나는 안되는 닉네임에을 추려보았다.
'ㄱr을ㄴr무' , 'easy-coding'
90년대 갬성 닉네임이 사용이 불가능 했다. 왜 안됬을까? 이것은 간단한 이유였다.
가-힣 으로 진행했기 때문에 모음과 자음이 합쳐진 한글만 적용되는 것이었다.
보통 한글을 정규식표현을 하게되면 ㄱ - 힇 까지라고 알게되었다.
그럼 easy-conding은 왜 안됬을까?
이 부분은 어떻게 검색해야할지 몰라서 생각보다 오랜시간을 잡아먹었다.
특수문자를 표기할 때에 +-_ 과 +_-는 다른 결과를 만들어 낸다.
간단하게 생각하면 일반적으로 a-z까지로 알파벳을 설정할 때에 중간에 들어가는 -(하이푼)이 a와 z 사이 값을 축약한다.
따라서 +-_ 로 처음에 작성했던 방법음 +와 _ 사이의 값들을 포함하는 방식이 되는 것이고 +_-로 작성해야 하나씩 따로따로 3개의 특수문자만
포함하게 되는 방식이었다.
'ㄱ - 힇'과 '+_-'로 변경
위에 원인과 해결방법을 통해 문제를 해결할 수 있었다.