문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
s | return |
---|---|
"a234" | false |
"1234" | true |
function solution(s){
const regex = /[^0-9]/g;
let filterStrLength = s.replace(regex, "").length;
return s.length === filterStrLength && (filterStrLength === 4 || filterStrLength === 6);
}
문자열 s가 숫자만 구성되어있는지 확인하기 위해 정규식과 replace
를 사용하여 해당 문자열에서 숫자를 제외한 나머지는 빈 문자열로 교체하였다. 만약 s가 숫자로만 구성되어있다면 문자열의 길이 변화는 없었을 것이므로, 원래 문자열인 s와 숫자필터링한 문자열의 길이가 같은지 비교를 하였고 길이가 같을 경우(숫자로만 구성되어있는 경우) 그 문자열의 길이가 4나 6일 때만 true를 리턴하도록 하였다.
처음에는 filter
를 사용해서 Number
타입의 요소만 걸러내려고 했는데, 테스트 과정에서 에러가 나왔다. 알고보니 Number
는 e
일 때도 숫자로 생각해서 지수로 변환시킨다고 한다.