728x90

Regex 클래스를 사용하여 특정 문자 패턴을 찾는다.
Regex.Match() 메서드는 매치된 정보를 갖는 Match 클래스 객체를 리턴한다
매치된 문자열이 존재하면 Match.Success 속성이 True가 되고, Match.Index 속성을 통해 문자 패턴 위치를 알 수 있다.

string str = "서울시 서초구 양재동 우리아파트";
Regex regex = new Regex("우리");
Match m = regex.Match(str);
if (m.Success)
{
    Debug.WriteLine("{0}:{1}", m.Index, m.Value);
}


메타문자  의미
^        라인의 처음     
$        라인의 마지막   
\w       문자(영숫자) [a-zA-Z_0-9]
\s       Whitespace (공백,뉴라인,탭..)
\d       숫자
*        Zero 혹은 그 이상
+        하나 이상
?        Zero 혹은 하나
.        Newline을 제외한 한 문자
[ ]      가능한 문자들
[^ ]     가능하지 않은 문자들
[ - ]    가능 문자 범위
{n,m}    최소 n개, 최대 m개
(  )     그룹
|        논리 OR




//텍스트박스에 한글만 입력하기
using System.Globalization;
private void textBox1_TextChanged(object sender, EventArgs e)
{
    char[] inputchars = textBox1.Text.ToCharArray();
    var sb = new StringBuilder();
    foreach (var item in inputchars)
    {
        if (char.GetUnicodeCategory(item) == UnicodeCategory.OtherLetter)
        {
            sb.Append(item);
        }
    }
    textBox1.Text = sb.ToString().Trim();
}


// 한글입력이 아닌 경우 한글만 입력하라고 팝업창을 띄우고자 할 경우

private void textBox1_TextChanged(object sender, EventArgs e)
{
    char[] inputchars = textBox1.Text.ToCharArray();
    var sb = new StringBuilder();
    foreach (var item in inputchars)
    {
        if (char.GetUnicodeCategory(item) == UnicodeCategory.OtherLetter)
        {
            sb.Append(item);
        }
        else
        {
            MessageBox.Show("한글만 입력해주세요");
        }
    }
    textBox1.Text = sb.ToString().Trim();
}


//텍스트박스에 영어만 입력하기
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{   
    if(!(Char.IsLetter(e.KeyChar)) && e.KeyChar != 8)   
// 키값 8번은 백스페이스 값   

    {       

         e.Handled = true;   
    }
}

private void textBox1_Leave(object sender, System.EventArgs e)
{   
    Regex regex = new Regex(@"[a-zA-Z]");   
    Boolean ismatch = regex.IsMatch(textBox1.Text);   
    if (!ismatch)   
    {       
        MessageBox.Show("영문자만 입력해 주세요.");   
    }
}

//텍스트박스에 숫자만 입력하기
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{   
    if(!(Char.IsDigit(e.KeyChar)) && e.KeyChar != 8)   
    {       
        e.Handled = true;   
    }
}

private void textBox1_Leave(object sender, System.EventArgs e)
{   
    Regex regex = new Regex(@"[0-9]");   
    Boolean ismatch = regex.IsMatch(textBox1.Text);   
    if (!ismatch)   
    {       
        MessageBox.Show("숫자만 입력해 주세요.");   
    }
}


private void textBox1_Leave(object sender, System.EventArgs e)
{
    Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"); // 이메일
    Boolean ismatch = regex.IsMatch(textBox1.Text);
    if (!ismatch)
    {
        MessageBox.Show("E-Mail 형식만 가능합니다");
    }
}



텍스트박스 입력을 하고 엔터키가 눌려졌을 경우

private void SearchBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        btnMovieSearch_Click(sender, e);
    }
}


private void btnMovieSearch_Click(object sender, EventArgs e)
{
    if (this.SearchBox.Text == "")
    {
        MessageBox.Show("검색어를 입력하세요", "알림", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        this.SearchBox.Focus();
    }
    else
    {
        string url = string.Format("http://movie.naver.com/movie/search/result.nhn?query={0}&section=all&ie=utf8", SearchBox.Text.Trim());
        System.Diagnostics.Process.Start(url);
    }
}


텍스트박스 속성을 읽기전용으로 하고 싶은 경우

textBox1.ReadOnly = true;
textBox1.BackColor = System.Drawing.SystemColors.Window; // 배경색이 다르게 보이지 않도록 처리


텍스트박스에 커서가 맨마지막 글자위에 움직이게 하고 싶은 경우

textBox1.Focus(); // 선택하고
textBox1.SelectionStart = textBox1.Text.Length; // 글자의 마지막을 선택
textBox1.ScrollToCaret(); // 선택된 위치에 스크롤을 움직인다




'C# > 문법 및 기능' 카테고리의 다른 글

C# 과 VB 문법 차이  (0) 2015.09.22
C# Controls  (0) 2015.09.18
C# 콤보박스(comboBox)  (0) 2015.09.09
C# 키 입력처리 이벤트, Load Event, Form_Closing  (0) 2015.08.30
C# 정규식을 이용한 문자열 체크  (0) 2015.08.25
블로그 이미지

Link2Me

,