본문 바로가기
C#

[C#] BCL Regex 정규식을 이용한 이메일 규칙 판별

by Jcoder 2020. 11. 29.

1. 기본 방법 (정규식 이용 x)

 

* 반드시 @ 문자를 한번 포함해야 한다.

* @문자 이전의 문자열에는 문자와 숫자만 허용된다(특수문자 x)

* @문자 이후의 문자열에는 문자와 숫자가 허용되지만 반드시 하나의 . 이 포함되어야 한다.

 

기본 배열 이용

static void Main(string[] args)

{

    Console.WriteLine("System.Text.RegularExpressions.Regex");

 

    string email = "tjdskaqks@gmail.com";

    Console.WriteLine(IsEmail(email));

}

 

private static bool IsEmail(string email)

{

    string[] parts = email.Split('@');

 

    if (parts.Length != 2// @구분 지어진 배열 길이가 2가 아니면 false

    {

        return false;

    }

 

    if (!InAlphaNumeric(parts[0])) // @ 앞 문자열이 알파펫과 숫자가 아니면 false 리턴

    {

        return false;

    }

 

    parts = parts[1].Split('.');

    if (parts.Length is 1// @ 뒷 문자열이 .으로 나뉘고 길이가 1이면 false 리턴

    {

        return false;

    }

 

    foreach (var stringindex in parts)

    {

        if (!InAlphaNumeric(stringindex))

        {

            return false;

        }

    }

    return true;

}

 

private static bool InAlphaNumeric(string v)

{

    foreach (char item in v)

    {

        if (!char.IsLetterOrDigit(item))

        {

            return false;

        }

    }

    return true;

}

 

2. 정규식 이용

 

* ^([0-9a-zA-Z]+)@([0-9a-zA-Z]+)(\.[0-9a-zA-Z]+){1,}$

^ : 문장의 시작이 다음 규칙을 만족해야 함.

([0-9a-zA-Z]+) : 영숫자 1개 이상

@ : 반드시 @ 문자가 있음

([0-9a-zA-Z]+) : 영숫자 1개 이상

(\.[0-9a-zA-Z]+) : .점과 1개 이상의 영숫자

{1,} : 이전의 규칙이 1번 이상 반복 (즉, .점과 1개 이상의 영숫자가 반복)

$ : 이전의 규칙을 반복하면서 끝남 (즉 .점과 1개 이상의 영숫자가 1번 이상 반복되면서 끝)

정규식 이용

 

static void Main(string[] args)

{

    Console.WriteLine("System.Text.RegularExpressions.Regex");

 

    string email = "tjdskaqks@gmail.com";

    Console.WriteLine(IsEmail2(email));

}

 

private static bool IsEmail2(string email)

{

    System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"^([0-9a-zA-Z]+)@([0-9a-zA-Z]+)(\.[0-9a-zA-Z]+){1,}$");

 

    return regex.IsMatch(email);

}