어떤 문자를 입력 받아 해당 구문에 대해 올바른 문자열인지 판별할 때 Regex를 사용할 수 있습니다.
기능들이 많지만 사실 다 필요한 건 아니고 간단하게 쓸거잖아요? ㅎㅎ
일단 훑어봅시다.
개인적으로 필요한 기능은 한글과 영어 숫자에 대한 입력만을 확인하기 위한 것이었습니다.
a~z, A~Z, 가~히, ㄱ~ㅎ, ㅏ~ㅣ, 0~9
using System;
using System.Text.RegularExpressions; //Regex
namespace ConsoleApp
{
class Program
{
private static bool IsValidString (string input)
{
//^는 시작 의미
//+는 최소 1개 이상을 의미
//$는 끝을 의미
//@" " 로 쓰는 이유는 \를 문자로 다루기 위해서입니다.
//"c:\\" == @"c:\"
return Regex.IsMatch(input, @"^[a-zA-Z0-9가-히ㄱ-ㅎㅏ-ㅣ]+$");
//아래 코드와 같은 동작을 합니다..
//for (int i = 0; i < input.Length; ++i)
//{
// char ch = input[i];
// if (('a' <= ch && ch <= 'z') ||
// ('A' <= ch && ch <= 'Z') ||
// ('0' <= ch && ch <= '9') ||
// ('ㄱ' <= ch && ch <= 'ㅎ') ||
// ('ㅏ' <= ch && ch <= 'ㅣ') ||
// ('가' <= ch && ch <= '힣') ||
// ch == '_')
// {
// //ok
// }
// else
// {
// return false;
// }
//}
//return true;
}
static void Main(string[] args)
{
for (int i = 0; i < 5; ++i)
{
Console.Write("input : ");
string input = Console.ReadLine();
if (IsValidString(input))
{
Console.WriteLine("유효한 문자열입니다.");
}
else
{
Console.WriteLine("유효하지 않은 문자열입니다.");
}
Console.WriteLine();
}
}
}
}
추가적으로 알아야 할 것은 input 길이가 더 길어도 패턴에 매칭되면 무조건 true를 반환한다는 것입니다.
. : 1개의 문자를 의미
ex) Regex.IsMatch("123", @"...") == true (3개가 매칭됩니다.)
Regex.IsMatch("12344", @"...") == true (3개가 매칭되면 true가 됩니다.)
Regex.IsMatch("12", @"...") == false (2개만 매칭되어 false가 됩니다.)
[ ] : 내부의 모든 문자를 의미
[a-z] - 표시를 통해 a ~ z 까지의 의미를 표현합니다.
[a-z] == [abcd...xyz]
[^a-z] 내부에 ^문자가 들어가면 부정형태 즉 a~z까지 들어가면 false가 됩니다.
ex) Regex.IsMatch("z", @"[a-z]") == true
Regex.IsMatch("z25", @"[a-z]" == true (앞의 1개가 매칭되어 true가 됩니다.)
Regex.IsMatch("1", @"[a-z]" == false
'C# > Console' 카테고리의 다른 글
[C#] 금액 (숫자) -> 한글 (원)로 변환하기 (0) | 2023.01.23 |
---|---|
[C#] StructLayout : 클래스/구조체 크기 설정 (0) | 2022.08.03 |
[C#] 제이슨 JSON (JObject, JArray, Serialize, Deserialize) (0) | 2022.06.30 |
[C#] 내 아이피 주소 보기 IPv4, IPv6 (0) | 2022.03.07 |
[C#] 윈도우 프로시저 탐색 및 포커싱 된 프로세스 접근하기 (0) | 2022.03.01 |