- 정규식
- isNaN()
function solution(s) {
const RegExp = /[a-z]/g;
if(s.length==4 || s.length==6){
// a-z까지의 문자가 들어가지 않으면서, 숫자판별함수인 isNaN을 and로 씀
// 첫번째에선 지수(e)를 걸러주고, 두번째에선 n진수에서 10진수로 바꾸면 숫자가 되는 것들을 걸러줌
if(!RegExp.test(s) && !isNaN(s)){
return true;
}
}
return false;
}
console.log( solution( "000011" ) )
// 결과값: true
RegExp.test(s)
test메소드는 인자로 받는 문자열이 해당 정규식(RegExp)에 만족하는지 판별하고 불린으로 리턴값을 제공해준다.
나는 앞쪽에 부정연산자(!)를 써주면서 a-z가 들어가지 않는지를 판별하기 위해서 사용했다.
isNaN(s)
매개변수(여기선 s)가 숫자인지 판별하여 불린값(숫자면 false, 숫자가 아니면 true) 함수이다. 따음표로 감싸져있어 문자열인 숫자("1234")도 숫자로 인식해서 알려준다. 나같은 경우에는 if문 안쪽에 넣어서 false일 경우에 if문 안쪽으로 들어오도록 코딩을 했기 때문에 앞에 not연산자를 넣어줬다.
정확한 동작원리가 뭔지는 잘 모르겠지만 3진수나 다른 n진수에서 10진수로 바꾸었을 때 숫자가 되는 경우에도 false값을 내놓는다고 한다(어떤 숫자인지는 잘 모르겠다). 그리고 지수(e)같은 경우에도 숫자로 인식할 수 있다고 한다. 그래서 위에 test메소드와 함께 써줬다.