2012-08-02 4 views
-1

전자 메일 확인을 위해이 정규식을 사용합니다. /^\w+([-+.'']\w+)*@\w*([-.çöişğü]\w*)*\.\w+([-.]\w+)*$/ 그러나이 정규식은 [email protected]과 같은 전자 메일을 허용하지 않습니다. 이 이메일을 수락하기 위해 정규식을 변경하는 방법을 알려 주실 수 있습니까?- 문자가 포함 된 전자 메일

+0

왜 터키어 문자'çöişğü'가 특별한가요? 전체 IDNA를 지원하거나 엄격하게 ASCII/punycode를 고수해야합니다. – tripleee

답변

0

변경 둘째 \w+\w*에 :

^\w+([-+.'']\w*)*@\w*([-.çöişğü]\w*)*\.\w+([-.]\w+)*$
+0

감사합니다. \ w + ([- +. ''] \ w *) * @ w * ([-. çöişğü] \ w *) * \. \ w + ([-.] \ w +) * $ 그것은 나를 도왔다. –

+0

나는 diff bolding을 바꿉니다. 해결 된 질문? – Ria

0

내가 HTML5 패턴 이메일 패턴이를 사용

^(?:[-+~=!#$%&'*/?\^`{|}\w]+)(?:\.[-+~=!#$%&'*/?\^`{|}\w]+)*@(?:[a-zA-Z0-9][-a-zA-Z0-9]*[a-zA-Z0-9]\.)+[a-zA-Z]{2,6}$ 
0
/^\w+([-+.'']*\w*)*@\w*([-.çöişğü]\w*)*\.\w+([-.]\w+)*$/ 
1

당신이 c# 태그로 질문을 태그하면 왜 안 이메일 유효성 검사를 위해 빌드 System.Net.Mail.MailAddress 클래스 생성자를 사용 하시겠습니까? 그것은 많은 메일 주소 형식을 지원하며 정규 표현식보다 더 많은 시나리오를 포함합니다. 참고 :

var isEmailValid = false; 
try 
{ 
    var email = new MailAddress("[email protected]"); 
    isValidEmail = true; 
{ 
catch (FormatException x) 
{ 
    // invalid email address 
} 

정규 표현식보다 쉽지 않습니까?

0

이것은 전자 메일 유효성 검사에 특별히 사용하는 정규 표현식입니다. 그러나이 방법을 추천하지는 않습니다. 특히 비즈니스 컨텍스트에서 사용할 때는 특히 그렇습니다. 이메일 검증에 대해 생각할 때 정규 표현식이 너무 엄격하다는 사실 때문에. 그것들은 도메인이 완성 될 수있는 여지를 허용하지 않으며,이 모든 가능성을 감안하면 정규 표현식을 멀리 오용하여 불안정하게 만듭니다.

string strRegex = @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" + 
     @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$"; 

    Regex re = new Regex(strRegex); 
    if (re.IsMatch(txtEmail.Text) || txtEmail.Text == "" || txtEmail.Text.Length > 100 && txtEmail.Text.Length < 10) 
    { 
     MessageBox.Show("Thanks"); 

    } 

    else 
    { 
     MessageBox.Show("Please enter a valid email address"); 



    } 

} 

이 좀 더 안정되는 제안 solotuion 및 efficent이며 클래스에 내장 mroe 방을 허용하고 정규 표현식만큼 엄격하지 않다으로 utiliseszsthe EmailAddressAttribute. 이것이 도움이되기를 바랍니다.

 TextBox tb = new TextBox(); 
     tb.KeyDown += new KeyEventHandler(txtEmail_KeyDown); 
     // Run Checks after the enter is pressed. 
     if (e.KeyCode == (Keys.Enter) || e.KeyCode == (Keys.Tab)) 
     { 
      if (!new EmailAddressAttribute().IsValid(txtEmail.Text)) 
      { 

       MessageBox.Show(txtEmail.ToString() + " is not a valid Email address"); 
       txtEmail.Clear(); 
      } 
      else 
      { 
       MessageBox.Show("The address: " + txtEmail + " is valid"); 
       txtEmail.Clear(); 
      } 
     } 
관련 문제