출처 : http://blog.naver.com/skydown/40028959060
[ 정규표현식에 대해 알아보자(1) ]
정규표현식은 어떤 문자 패턴을 찾아서 수정 및 교환 등 웹프로그램 개발시
정교한 문자 처리를 가능하게 해준다. 그럼 정규표현식의 사용법에 대하여 알아
보자.
첫번째는 기본적인 기호들에 대하여 알아 보겠다.
정규표현식 기본 문법
'^' 와 '$'
'^' 는 바로 문자 뒤의 문자열로 시작됨을 가르킨다.
"^The" : "The"로 시작하는 문자. ex) The Car is red, Theater...
'$' 는 문자열의 맨 마지막을 가르킨다.
"of despair$" : "of despair"로 끝나는 문자열. ex) The concept of despair
"^hello$" : hello로 시작해 hello로 끝나는 경우 이므로 "hello" 뿐이다.
'.', '*' 와 '+' 그리고 '?'
'.' 은 어떤 문자든지 임의의 한 문자를 말한다. 꼭 하나의 문자가 있어야 한다.
ex) "x.z"는 xyz, xxz, xbz 등이고 xz나 xyyz는 안된다.
'*' 는 바로 앞의 문자가 없거나 하나 이상의 경우를 말한다.
ex) "ab*" 는 a, abc, ab, abbbb 등을 말한다.
'+' 는 바로 앞의 문자를 나타내면 꼭 1나 이상이어야 한다.
ex) "ab+"는 abc, abbb 등이고 a는 되지 않는다.
'?' 는 바로 앞의 한 문자가 있거나 없는 것을 말한다. 단지 한 문자만이어야
한다.
ex) "ab?"는 a 또는 ab 를 나타낸다.
[], {} 와 () 그리고 |
'[]' 는 [] 안에 존재하는 문자들 중 한 문자만을 나타낸다.
ex) [abc] 는 a 또는 b 또는 c 중에 한문자를 나타낸다. 여기서 '-'를 사용할땐
범위를 나타낸다. 즉 [ a-f ] 는 [abcdf] 와 같은것을 나타낸다.
'{}'는 {} 앞에 있는 문자나 문자열의 개수를 정하는 것이다.
ex) "ab{2}" 는 "abb"를 나타낸다. 즉 b의 개수가 2개를 나타낸다.
"ab{2,}" 는 abb, abbbbb 등 b의 개수가 2개 이상을 나타낸다.
"ab{3,5}" 는 abbb, abbbb, abbbbb 와 같이 b가 3개에서 5개 까지를 나타낸다.
'()' 는 ()안에 있는 글자들을 그룹화한다.
ex) a(bc)* 는 a, abc abcbc 등 'bc'가 없거나 하나 이상인 경우이다.
"a(bc){2}" 는 abcbc 를 나타낸다.
'|' 는 OR 연산자 기능을 한다.
"kim|lee" 는 kim 또는 lee 둘중 하나를 나타낸다.
지금까지 정규표현식의 기본적인 기호에 대하여 정리해 보았다. 그럼 다음
시간에는 좀더 복잡한 기호식에 대하여 알아보겠다.
[ 정규표현식에 대해 알아보자(2) ]
이번에는 좀 더 복잡한 정규 표현식의 예를 다루어 보자
문자 클래스
[[:alpha:]] 는 [a-zA-Z] 와 동일
[[:digit:]] 는 [0-9] 와 동일
[[:alnum:]] 는 [a-zA-Z0-9] 와 동일
[[:space:]] 는 공백 문자 의미
많은 예제를 이해함으로 좀더 깊이 있게 정규 표현식을 나열해 보자
^[1-9][0-9]*$ : 1000 또는 200처럼 처음 숫자가 0이 아니고 끝까지 숫자만 존재
즉 돈 등의 값을 유효한지 검사 한다.
^(0|[1-9][0-9]*)$ : 0 또는 1000, 200처럼 돈의 단위가 될 수 있다.
^(0|-?[1-9][0-9]*)$ : 이 표현은 음수 값도 표현되어진다.
^[0-9]+(.[0-9]+)?$ : 즉 소수점 표현을 위해 나타내었다. '.' 는 임의의 한
문자가 아닌 소수점 마크 '.'을 나타내기 위해 사용 되었다. 즉 20 또는 21.2
같은 소수점 한자리까지만 나타낸다.
^[0-9]+(.[0-9]{2})?$ : 이것은 소수점 두번째까지 나타낸다는 것이다. ex) 0.12
^[0-9]+(.[0-9]{1,2})?$ : 이것은 소수점 하나 또는 두 개까지인 것이다.
^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$ : 이것은 3자리식 짤라서 콤마를 붙여
주면서 소수점 한자리에서 두자리까지 표현한다. ex) 12,234,566.12
위와 같이 예를 들어 간단히 설명해 보았다.
위의 부분을 자세히 분석해보구 이해가 확실히 되면 어느 정도 자신이 생길
것이다.
그럼 다음은 마지막으로 자주 웹프로그램에서 사용하는 메일 및 웹 등의 유효성을
검사하여 링크를 걸어주는 것에 대하여 이야기해보겠다.
[ 정규 표현식에 대해 알아보자(3) ]
이번에는 정규 표현식을 사용 하여 메일 및 웹 링크등의 유효성 검사 및 링크
걸어주기 등에 대하여 알아 보자.
이메일 유효성 검사
이메일에 대하여 알아보면 이메일 주소는 유저명과 서버명을 '@'를 사용하여
나타낸다. 예를 들면 start@linuxstart.co.kr과 같이 나타낸다.
유저명의 조건 : 대문자, 소문자, 숫자 그리고 '.' '-' '_' 을 가질 수 있다.
유저명은 '.' 로 시작 또는 끝나서는 안된다.
[_0-9a-zA-Z-]+(.[_0-9a-zA-Z]+)*
위와 같이 유저명의 유효성을 검사 할 수 있다.
서버명의 경우 : 위의 유저명의 경우와 동일하다. 단 '_' 을 사용해서는 안된다.
[0-9a-zA-Z-]+(.[0-9a-zA-Z-]+)*
와 같이 나타낼 수 있다.
전체의 전자우편 유효성 검사는 유저명@서버명이므로 아래와 같다.
^[_0-9a-zA-Z]+(.[_0-9a-zA-Z+)*@[0-9a-zA-Z]+(.[0-9a-zA-Z]+)*$
와 같이 표현할 수 있다.
주소 유효성 검사
HTTP의 주소등 자동 링크 걸어주기 위해선 먼저 URL의 유효성을 검사하여야 한다.
URL은 대문자, 소문자, 숫자 ,'.','_','=','&','?','~','@','/','+'를 사용할 수
있다
즉 http://([0-9a-zA-Z./@~?&=_]+)가 된다.
링크를 PHP를 사용하여 HTML로 걸어 주기 위한 방법
$add="www.linuxstart.co.kr";
$pattern = "([0-9a-zA-Z./@~?&=_]+)";
$link = ereg_replace($pattern, "http://1" $add);
echo ("$link");
의 결과 $link는 다음처럼 변경된다.
http://www.linuxstart.co.kr
와 같이 된다. 참고로 1은 첫번째 괄호안의 값을 말한다. 2는 2번째 등등
그럼 메일 링크의 경우를 보자
$mail = "start@linuxstart.co.kr";
$pattern =
"([_0-9a-zA-Z]+(.[_0-9a-zA-Z]+)*)@([0-9a-zA-Z]+(.[0-9a-zA-Z]+)*)"
$link = ereg_replace($pattern, "
href='mailto:1@3'>1@3",$mail);
echo ("$link");
의 결과 $link는 다음과 같다.
start@linuxstart.co.kr
와 같이 된다.
'쓸만한 글' 카테고리의 다른 글
ASP - Command객체를 사용해야 하는 이유 (0) | 2007.08.09 |
---|---|
ASP - 날짜와 시간에 관한 함수 (0) | 2007.08.08 |
ASP_FSO(FileSystemObject) 사용방법 _총정리 (0) | 2007.08.02 |
[스크랩] <의학> 프린터, 담배만큼 건강에 나쁘다 (0) | 2007.08.01 |
asp에서 사용하는 Recordset 개체의 속성과 함수 (0) | 2007.07.31 |