Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 숫자만 허용하는 정규식 작성 방법 완벽 가이드

정규식이란 무엇인가?

정규식(Regular Expression)은 입력 텍스트와 비교하여 일치 여부를 판별할 수 있는 패턴입니다. .NET 프레임워크는 System.Text.RegularExpressions 네임스페이스를 통해 강력한 정규식 엔진을 제공하며, 이를 활용하면 문자열 검증, 검색, 치환 등의 작업을 손쉽게 처리할 수 있습니다.

정규식 패턴은 하나 이상의 문자 리터럴, 연산자 또는 구문으로 구성됩니다.

기본 메타문자 살펴보기

정규식에서 자주 사용되는 기본 메타문자는 다음과 같습니다.

* = 0개 이상
? = 0개 또는 1개
^ = 부정(not)
[] = 범위

^ 기호는 부정 조건을 지정할 때 사용되며, 대괄호 [] 안에는 0-9, a-z, A-Z처럼 값의 범위를 지정할 수 있습니다.

C#에서 숫자만 매칭하는 정규식 패턴 분석

아래 예제에서 사용된 패턴은 ^-?[0-9][0-9,\.]+$입니다. 각 구성 요소의 의미는 다음과 같습니다.

  • ^ : 문자열의 시작
  • -? : 음수 기호(-)가 있어도 없어도 됨
  • [0-9] : 첫 글자는 반드시 0~9 사이의 숫자
  • [0-9,\.]+ : 두 번째 글자부터는 숫자, 쉼표(,), 마침표(.)가 하나 이상 반복
  • $ : 문자열의 끝

예제 1: 숫자가 아닌 문자가 포함된 경우

class Program{
    public static void Main(){
        string num = "123dh";
        Regex regex = new Regex(@"^-?[0-9][0-9,\.]+$");
        var res = regex.IsMatch(num);
        System.Console.WriteLine(res);
    }
}

실행 결과:

False

"123dh"에는 알파벳 'd'와 'h'가 포함되어 있어 숫자 전용 패턴과 일치하지 않으므로 False가 반환됩니다.

예제 2: 순수 숫자만 있는 경우

class Program{
    public static void Main(){
        string num = "123";
        Regex regex = new Regex(@"^-?[0-9][0-9,\.]+$");
        var res = regex.IsMatch(num);
        System.Console.WriteLine(res);
    }
}

실행 결과:

True

입력값이 순수한 숫자로만 구성되어 있으므로 패턴과 일치하여 True가 반환됩니다.

예제 3: 소수점이 포함된 경우

class Program{
    public static void Main(){
        string num = "123.67";
        Regex regex = new Regex(@"^-?[0-9][0-9,\.]+$");
        var res = regex.IsMatch(num);
        System.Console.WriteLine(res);
    }
}

실행 결과:

True

패턴에 마침표(.)가 허용되므로 소수 형태의 입력값도 정상적으로 매칭되어 True가 반환됩니다.

실무 활용 시 주의사항

Regex 클래스를 사용하려면 코드 상단에 using System.Text.RegularExpressions;를 반드시 추가해야 합니다. 또한 C#에서 역슬래시(\)가 포함된 정규식을 작성할 때는 문자열 앞에 @ 기호를 붙여 축자(verbatim) 문자열로 선언하는 것이 좋습니다. 이렇게 하면 이스케이프 문자 처리 과정에서 발생할 수 있는 오류를 예방할 수 있습니다.