03/08
JavaScript 에서 문자열이 숫자인지 체크하는 방법을 정리해보자.
isNan()
Nan 은 Not a Number 로, 문자열이 숫자인지 체크하기 위한 내장함수. 숫자가 아닌 경우 true, 숫자인 경우 false 를 반환한다. 이를 반대로 사용해 !isNan() 으로 보기 쉽게 표현할 수도 있다.
하지만, 주의해야 할 점은 empty content 의 경우 에러를 발생하는 것이 아니라 false 를 반환한다...
isNan("123"); // false
isNan("123.1"); // false
isNan(123); // false
isNan(-123); // false
isNan(.1); // false
isNan("apple"); // true
isNan("321-123"); // true
isNan(undefined); // true
isNan({}); // true
isNan(''); // false
isNan(' '); // false
isNan(null); // false
isNan(true); // false
isNan(false); // false
isNan([]); // false
isNan(new Date()); // false
isNan(new Date().toString()); // true
undefined, { }, [ ], null, " ", ' ', true, false, 등등에 대해서도 false를 반환해버리는 것을 알 수 있다.
문자열이 아닌 타입이거나 empty 인 경우 따로 처리해야 하는 것.
Number
Number 는 JS의 내장 객체로, 문자열이나 다른 값을 Number 타입으로 변환한다. 변환할 수 없으면 Nan 을 반환하는 식.
!!Number(value) 처럼 사용해, true / false 로 편하게 확인할 수 있다.
하지만 저렇게 사용하는 방식에도 작은 문제가 있는데,
Number('121'); // 121
!Number('121'); //false
!!Number('121'); // true
Number('0'); // 0
!Number('0'); // true
!!Number('0'); // false
Number('abc123'); // NaN
!Number('abc123'); // true
!!Number('abc123'); //false
value 가 0인 경우, true/false 를 반환해버리고,
Nan 인 경우에도, Nan 을 false 로 평가해 그 반대를 반환해버린다.
각 경우를 따져서 사용해야 함.
정규식
숫자 패턴만 허용하는 정규식 체크를 거치면 예외 없이 확인할 수 있다.
function isNum(value) {
var pattern = /^[0-9]+$/g;
return pattern.test(value);
}
isNum("123"); // true
isNum("123.1"); // false
isNum(123); // true
isNum(-123); // false
isNum(.1); // false
isNum("apple"); // false
isNum("321-123"); // false
isNum("123abc"); // false
isNum(undefined); // false
isNum({}); // false
isNum(''); // false
isNum(' '); // false
isNum(null); // false
isNum(true); // false
isNum(false); // false
isNum([]); // false
isNum(new Date()); // false
isNum(new Date().toString()); // false
편-안
'언어 > JavaScript' 카테고리의 다른 글
| 이벤트 루프 (0) | 2025.12.29 |
|---|---|
| JS 는 이상해 (0) | 2025.12.02 |
| Object.assign (0) | 2025.12.02 |
| 커스텀 정렬하기 (0) | 2025.11.27 |
| 숫자 자릿수 구분하기 (0) | 2025.11.11 |