어제 오늘 내일

[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