어제 오늘 내일

[Javascript] 정규식으로 문자열이 숫자인지 체크하기 본문

IT/Javascript

[Javascript] 정규식으로 문자열이 숫자인지 체크하기

hi.anna 2025. 2. 24. 18:23

정규식으로 문자열이 숫자인지 체크하기

JavaScript에서 문자열이 숫자만으로 이루어졌는지 확인하기 위해 다양한 정규표현식을 사용할 수 있습니다.


방법 1: 기본 정규표현식

가장 기본적인 형태로, 문자열이 0에서 9까지의 숫자로만 이루어졌는지 검사합니다.

function isNumeric(str) {
return /^[0-9]+$/.test(str);
}
console.log(isNumeric("12345")); // true
console.log(isNumeric("123a5")); // false
console.log(isNumeric("00123")); // true
console.log(isNumeric("")); // false (빈 문자열도 false 처리)
console.log(isNumeric(" ")); // false (공백도 false 처리)
  • ^: 문자열의 시작
  • [0-9]: 숫자 (0부터 9까지)
  • +: 하나 이상의 숫자가 반복
  • $: 문자열의 끝

방법 2: \d 사용

\d숫자(digit)를 의미합니다. [0-9]와 동일한 역할을 합니다.

function isNumeric(str) {
return /^\d+$/.test(str);
}
console.log(isNumeric("12345")); // true
console.log(isNumeric("67890")); // true
console.log(isNumeric("123abc")); // false
console.log(isNumeric("12 34")); // false (공백 포함)
console.log(isNumeric("")); // false
  • \d: 숫자 (0부터 9까지)
  • +: 하나 이상의 숫자가 반복

방법 3: 숫자의 길이 제한

숫자의 길이를 제한하고 싶다면 {n,m}을 사용할 수 있습니다. 예를 들어, 최소 1개에서 최대 10자리까지 검사:

function isNumeric(str) {
return /^\d{1,10}$/.test(str);
}
console.log(isNumeric("12345")); // true
console.log(isNumeric("9876543210"));// true
console.log(isNumeric("12345678901"));// false (11자리)
console.log(isNumeric("")); // false
  • {1,10}: 최소 1개, 최대 10개의 숫자

방법 4: + 대신 * 사용

*0개 이상의 숫자를 허용합니다. 즉, 빈 문자열도 true가 됩니다.

function isNumeric(str) {
return /^\d*$/.test(str);
}
console.log(isNumeric("")); // true (빈 문자열도 true)
console.log(isNumeric("12345")); // true
console.log(isNumeric("00123")); // true
console.log(isNumeric("123abc")); // false
  • *: 0개 이상
  • 주의: 빈 문자열("")도 숫자로 인식됩니다.

방법 5: 양수만 허용 (+ 기호 포함)

양수만 허용하고 싶다면 + 기호를 포함시킬 수 있습니다.

function isNumeric(str) {
return /^\+?\d+$/.test(str);
}
console.log(isNumeric("+12345")); // true
console.log(isNumeric("12345")); // true
console.log(isNumeric("-12345")); // false (음수는 허용 안함)
console.log(isNumeric("123abc")); // false
  • \+?: + 기호가 있을 수도 있고 없을 수도 있음
  • -는 허용하지 않으므로 음수는 false

방법 6: 음수와 양수 모두 허용

양수와 음수 모두 허용하려면 - 기호도 포함시킵니다.

function isNumeric(str) {
return /^[-+]?\d+$/.test(str);
}
console.log(isNumeric("+12345")); // true
console.log(isNumeric("-12345")); // true
console.log(isNumeric("12345")); // true
console.log(isNumeric("-abc")); // false
console.log(isNumeric("+-123")); // false (잘못된 형식)
  • [-+]?: - 또는 +가 있을 수도 있고 없을 수도 있음
  • 숫자만이거나, +숫자, -숫자 모두 허용

방법 7: 소수점 포함 숫자 검사

소수점이 포함된 실수도 검사하고 싶다면 . 기호를 포함합니다.

function isNumeric(str) {
return /^-?\d+(\.\d+)?$/.test(str);
}
console.log(isNumeric("123.45")); // true
console.log(isNumeric("-123.45")); // true
console.log(isNumeric("123")); // true
console.log(isNumeric("123.")); // false
console.log(isNumeric(".45")); // false
  • (\.\d+)?: 소수점 이하 숫자가 있을 수도 있고 없을 수도 있음
  • .특수 문자이므로 \.처럼 이스케이프 처리

방법 8: 공백 포함 숫자 검사

공백이 포함될 수 있는 숫자를 검사하고 싶다면 공백을 제거한 후 검사합니다.

function isNumeric(str) {
return /^\d+$/.test(str.trim());
}
console.log(isNumeric(" 12345 ")); // true
console.log(isNumeric(" 00123")); // true
console.log(isNumeric("1 2345")); // false (중간에 공백 있음)
console.log(isNumeric("")); // false
  • str.trim(): 문자열 양 끝의 공백 제거
  • 문자열 중간에 공백이 있는 경우false

정규식을 활용하여 문자열의 숫자여부를 판단하는 방법을 알아보았습니다.

반응형
Comments