C# TextBox 입력값(한글, 영문, 숫자) 검사, 엔터키 입력, readonly
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}§ion=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(); // 선택된 위치에 스크롤을 움직인다