처음 계획은 나쁘지 않았다.
s의 length가 4나 6인지 확인하고, 정규식으로 숫자만 필터링해서 true false를 반환하자.
그런데 '정규식으로 숫자만 필터링' 부분에서 자꾸 false가 반환돼서 좀처럼 넘어가질 못했다.
오답코드 (나는 무엇을 하고 싶었던 걸까)
const regexp = /^[0-9]$/gi;
console.log(regexp.test(s))
if((s.length === 4 ||s.length === 6) && regexp.test(s)){
answer = true;
} else answer = false;
아주 난리가 났다... 그 전에는 const regexp = /^[0-9]{4,6}$/gi;
라고 썼었다.
고민한 부분은 크게 두가지였다.
1. 일단 이 정규식 왜 안먹히지?
2. 정규식 부분에서 아예 길이(자릿수)까지 필터링 할 순 없을까?
function isValidString(s) {
return /^\d{4}$|^\d{6}$/.test(s);
}
answer = isValidString(s);
return answer;
function solution(s) {
var answer = true;
// s.length를 4나 6인지 확인해보고
// 정규식으로 s를 썰어서 숫자만 걸러보자
// 이 둘을 모두 만족하면 true, 아니면 false인걸로
const regexp = /^[0-9]{4}$|^[0-9]{6}$/;
answer = regexp.test(s)
return answer;
}
오?! 리하도 약에 쓰려면 없다더니 인가? (아니다)
^는 시작점을, $는 끝점을 나타낸다고 한다. 근데 이 것을 쓰고 안 쓰고의 차이가 뭐가 다른걸까? 🤔
충격적인 사실 알려준 참고 블로그들. 참고1 참고2
JS의 2차원 배열은 진짜가 아니라는(?) 것에서 발생하는 여러가지 문제가 있다.