[프로그래머스]신규 아이디 추천(js)

swanious·2021년 7월 16일
0

문제 설명

마침 정규 표현식에 대해 공부하는 중이었는데 이에 대해 연습할 수 있는 문제였다.
그냥 단계별로 정규 표현식을 적용하면 문제를 해결할 수 있다.

TIP

  • ~이외는 [^]로 표현하고, (^)은 시작을 ($)은 끝을 표현한다.
  • replace를 통해 값을 변환할 때 표현식을 만족시키는 패턴이 한 개 이상 있는지 검사하기 위해서 g flag를 붙여주었다.

1단계에서 toLowCase()로 소문자 변환을 해주기때문에 i flag는 고려할 필요가 없다.

나의 코드

function solution(new_id) {
    var answer = '';
    // 1단계- 대문자있으면 모두 소문자로 변환
    answer = new_id.toLowerCase(); 
    // 2단계- 소문자, 숫자, -_. 을 제외한 모든 문자 제거
    answer = answer.replace(/[^a-z0-9-_.]+/g, '');
    // 3단계- (..) -> (.) 변환
    answer = answer.replace(/\.\.+/g, '.');
    // 4단계- 마지막에 마침표(.)있으면 제거
    answer = answer.replace(/^\.|\.$/g, '');
    // 5단계- 빈 문자열이면 'a' 대입
    if (answer === '') answer = 'a';
    // 6단계- 길이가 16자 이상이면 15개로 변환 후 끝에 (.)있으면 제거
    if (answer.length > 15) {
        answer = answer.substr(0, 15);
        answer = answer.replace(/\.$/g, '');
    }
    // 7단계- 길이가 2자 이하면 3자가 될 때까지 마지막 문자 더해주기
    while (answer.length < 3) {
        answer = answer + answer[answer.length - 1];
    }
    return answer;
}

제 코드는 수많은 답 중 하나일 뿐입니다.
풀이에 문제가 있거나 더 좋은 방식이 있다면 공유해주세요 😀

profile
TIL 기록을 위한 블로그

0개의 댓글