1단계
1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다.
answer = answer.toLowerCase();
.toLowerCase 함수를 사용해 모든 문자를 소문자로 치환 시킴
<aside>
✅ toLowerCase()
메소드 : 문자열을 소문자로 변환해 반환
</aside>
2단계
2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.
answer = answer.replace(/[^a-z0-9-_.]/g, "");
replace를 이용하여 문자열을 치환시킬 수 있음 조건에서 주어진 문자를 제외한 문자를 []안에 포함된 정규표현식과 일치하면 빈문자열("")로 치환하면서 제거시킴
<aside> ✅ 정규표현식📢
/[]/g : 정규식 리터럴(슬래쉬"/"로 감싸는 패턴) └ g(global) 플래그를 붙여 조건의 문자를 모두 찾아줌
**[] 안의 ^**의 의미 : 해당문자를 제외함
a-z0-9-. : 알파벳소문자(a~z), 숫자(0~9), 빼기밑줄마침표(-.) 조건에 주어진 문자의 정규표현식
</aside>
<aside> ✅
replace()
메소드 : 어떤 패턴에 일치하는 일부 또는 모든 부분이 교체된 새로운 문자열을 반환</aside>
3단계
3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
answer = answer.replace(/\\.+/g, ".");
정규표현식에서 ( . ) 은 어떤문자든 상관없이 1개의 문자 자체를 뜻하기 때문에 ( . )을 온점으로 식별하기 위해서 백슬래시(\)를 붙여준 \. 로 온점이 포함된 문자열을 찾아줌
따라서, 이렇게 찾은 마침표( . )를 하나의 마침표(".")로 치환시켜줌
<aside> ✅ \. : .을 온점으로 식별해 줌
+ : 한 개 이상이 포함됨을 의미함
</aside>
4단계
4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
answer = answer.replace(/^\\.|\\.$/g, "");
빈문자열로 ("") 치환하여 제거
<aside> ✅ **[] 밖의 ^**는 제거가 아니라 첫번째 문자라는 의미
| 는 or 또는의 의미
**$**는 마지막 문자라는 의미
</aside>
5단계
5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다.
if(answer === ""){
answer += "a";
}
if문으로 조건식을 작성하여 빈문자열을 찾는 조건 입력 후, "a"를 대입하여 출력함
<aside> ✅ === : 엄격 일치 연산자로 answer이 빈문자열("")임을 확실하게 의미함
+= : 더하기 할당 연산자
= : 대입연산자로 같다가 아니라 대입을 한다는 의미
</aside>