정규식
- 정해진 패턴을 사용해서 일치하는 데이터 검색을 지원하는 표현식
정규식을 이용해서 특수문자를 제거 또는 지정한 특수문자를 사용할 수 있습니다.
그리고 Regex클래스를 이용한다. using System.Text.RegularExpressions; 네임스페이스 필요
< 정규 표현식에 사용되는 특수 문자 >
1. '.' (점)
- 임의의 한 문자를 의미합니다.
ex) f. c -> fac, fbc, frc ...
. fc -> afc, bfc, rfc ...
2. '*'
- 바로 앞의 문자가 없거나 하나 이상인 경우
ex) f*c -> c, fc, fcc, fffc ...
fps* -> fp, fps, fpss, fpsss ...
3. '+'
- 바로 앞의 문자가 하나 이상인 경우
ex) f+c -> fc, ffc, fffc ...
4. '?'
- 바로 앞의 문자가 없거나 하나뿐인 경우
ex) fp?s -> s, fps 두가지 표현이 유일
5. '^'
- 바로 뒤에 문자열로 시작
ex) ^The... 뒷부분부터 공백까지 검사. -> The girl is, Theather
^.e -> he, me, request, settle ...
6. '$'
- 바로 앞의 문자열로 종료
ex) a?bc$ -> eeabe, seebc, bc ...
+.e$ -> onthetoe, bctae, appetittle ...
7. '[ ]'
- [ ] 안에 있는 문자 중 하나( 범위의 경우 '-'로 지정합니다. )
ex) [ab]cd -> acd, bcd ...
[ a-z ] -> 알파벳 소문자
[a-zA-Z] -> 알파벳 소문자, 대문자
[0-9] -> 숫자
^[a-zA-Z] 영문자로 시작
^[가-힣] 한글로 시작
[^a-zA-Z0-9가-힣] 알파벳, 숫자, 힣 사이에 문자가 아닌게 있는지 확인
[Regex 클래스 적용]
아이디 등록시 특수문자가 불가능해야되기 때문에 체크를 해줘야 한다.
특수문자가 있는지 확인하기 위해서 string 정규식을 이용하여 특수문자를 뺀 문자를 받는다.
string idChecker = Regex.Replace(USER_ID.Text, @"[ ^0-9a-zA-Z가-힣 ]{1,10}", "", RegexOptions.Singleline);
그리고 원래의 string과 비교 후 다르면 에러메시지창을 띄운다.
if( USER_ID.Text.Equals(idChecker) == false )
{
USER_ID.Text.Remove( 0, USER_ID.Text.Length );
USER_ID.Text = "";
DXMessageBox.Show("특수문자, 공백은 허용되지 않습니다..");
}
아이디에 지정한 특수문자(&)를 넣고 싶은 경우에는 \&를 추가하면 된다.
string idChecker = Regex.Replace(USER_ID.Text, @"[ ^0-9a-zA-Z가-힣\& ]{1,10}", "", RegexOptions.Singleline);