function solution(new_id) {
    const str = (new_id
        .toLowerCase()
        .replace(/[^a-z0-9\\-_.]/g, '')
        .replace(/\\.+/g, '.')
        .replace(/^\\.|\\.$/g, '') || 'a')
        .slice(0, 15)
        .replace(/\\.$/, '');
    
    const len = str.length;
    const answer = len > 2 ? str : str + str[len - 1].repeat(3 - len);
    return answer;
}

정규식을 검색해가며 풀었다.

이런문제는 정규식을 사용하는게 베스트인것 같음.

정규식을 외우고 있어야 할 것 같다.

padEnd() 를 사용해서 더 간결하게 바꿀 수 있다.

function solution(new_id) {
    const id = new_id
        .toLowerCase()
        .replace(/[^\\w-_.]/g, '')
        .replace(/\\.+/g, '.')
        .replace(/^\\.|\\.$/g, '')
        .padEnd(1, 'a')
        .slice(0, 15).replace(/\\.$/, '');
    
    const answer = id.padEnd(3, id[id.length - 1]);
    return answer;
}

1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다.

str.toLowerCase()

String.toLowerCase() 사용

2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.

str.replace(/[^a-z0-9-_.]/g, '')
str.replace(/[^\\w-.]/g, '')

→ 문자 클래스 [] 와 캐럿 ^ 사용