문자열 검색 및 처리가 핵심으로 정규식을 알면 문제를 수월하게 풀 수 있다. 정규식을 작성하고 정규식 테스트 등과 같은 사이트에서 미리 확인을 해보면 용이하다.
function solution(new_id) {
function solution(new_id) {
const condition = /^(?=.{3,15}$)[a-z0-9](?:[a-z0-9-_.]*[a-z0-9])?$/g.test(new_id);
if(condition) {
return new_id;
}
const step1 = new_id.toLowerCase();
const step2 = step1.replaceAll(/[~!@#$%^&*()=+[\]{}:?,<>/]/g, '');
const step3 = step2.replaceAll(/\.{2,}/g, '.');
const step4 = step3.replaceAll(/^\.|\.$/g, '');
let step5 = step4;
if(step5.length === 0) {
step5 = 'a';
}
const step6_1 = step5.substring(0, 15);
const step6_2 = step6_1.replaceAll(/^\.|\.$/g, '');
let step7 = step6_2;
if(step6_2.length <= 2) {
step7 = step6_2.padEnd(3, step6_2[step6_2.length - 1]);
}
return step7;
}
기본적인 정규식은 알지만 이번 문제를 푸는데 있어서 /^(?=.{3,15}$)[a-z0-9](?:[a-z0-9-_.]*[a-z0-9])?$/g
와 같은 정규식들은 gpt 의 도움을 받았다. GPT 알려준 정규식이 정말 옳은 정규식인지 판단하기 위해서라도 공부를 해둬야겠다.