본문 바로가기
언어/JavaScript

문자열의 숫자 체크

by svcbn 2025. 12. 7.

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