메뉴 건너뛰기

프로그램언어

2021.03.26 13:59

정규표현식

조회 수 311 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

정규표현식을 자주 쓰진 않지만, 그래도 필요할때는 꼭 있다. 그런데 가끔쓰다 보니, 쓸때마다 찾아다니고, 어떤식으로 쓰는지도 다시 기억해 내고 하는게 짜증나서, 간단한 정리를 해보려고 했다.
하지만, 역시 간단한 정리조차.. 너무 양이 많아서..(괜히 책한권이 아닌거다..) 그냥 관련 링크만 정리해놓았다.

아래의 링크들은 PHP관련 정규표현식 링크이다.

기본 개념 http://php.net/manual/kr/regexp.reference.php
(2012.04.25추가 : 원래는 해당 페이지에 기본개념이 어느정도 있었는데, 이번에 확인해 보니 내용 분류가 조금 바뀌었다. 위 페이지에 들어가서 좌측 인덱스의 Introduction 아래 링크들을 하나씩 클릭해보기 바란다.)

패턴병경자 http://www.php.net/manual/kr/reference.pcre.pattern.modifiers.php
( 예 : "/\xf8/u" 에서 "u"를 패턴병경자라고 한다. )

함수목록 http://www.php.net/manual/kr/ref.pcre.php
( php에서 정규 표현식의 함수는 거이 preg_ 로 시작한다.)

//------------- 추가 2013.06.20
위의 글들이 예전엔 전부 한글이었는데, 해당 웹페이지의 사소한 개편이 있었는지.. 영어로 된 부분들이 많아서.... 대략적인 설명글을 가져왔다.(출처를 적고 싶은데, 어디서 복사해놨던건지 모르겠다...)
 

1. ^ 와 $ 의 사용의 예 
'^' 는 바로 문자뒤의 문자열로 시작 됨을 가르킨다. 
"^The" : 는 "The"로 시작 하는 문자를 말한다. 
'$' 는 문자열의 맨 마지막을 가르킨다. 
"of despair$" : 는 "of despair"로 끝나는 문자열이다. 
"^abc$" : 는 hello로 시작해 hello로 끝나는 경우 이므로 "abc" 만 해당된다.. 
 
2. '.' '*' '+' '?' 의 사용법 
'.' 은 어떤 문자든지 임의의 한문자를 말한다.꼭 하나의 문자가 있어야 한다. 
예) "x.z" 는 xyz, xxz, xbz 등이고 xz난 xyyz는 안된다. 
'*' 는 바로 앞의 문자가 없거나 하나 이상의 경우를 말한다. 
예) "ab*" 는 a, abc, ab, abbbb 등을 말한다. 
'+' 는 바로 앞의 문자를 나타내면 꼭 1나 이상이어야 한다. 
예) "ab+" 는 abc, abbb 등이고 a는 되지 않는다. 
'?' 는 바로 앞의 한문자가 있거나 없는것을 말한다. 단지 한문자 만이어야 한다. 
예) "ab?" 는 a 또는 ab 를 나타낸다. 
 
3. [], {} 와 () 그리고 | 
3-1 '[]' 는 [] 안에 존재하는 문자들중 한 문자만을 나타낸다. 
예) [abc] 는 a 또는 b 또는 c 중에 한문자를 나타낸다. 여기서 '-'를 사용할땐 범위를 나타낸다. 
즉 [ a-f ] 는 [abcdf] 와 같은것을 나타낸다. 
문자클래스 오퍼레이터라는 것에 대해 잠시.. 
유사한 성격의 문자들을 사용자가 알아보기 쉽게 단어로 그룹을 지었다고 보면 된다. 
 
alnum : 알파벳과 숫자 
alpha : 알파벳 
blank : 스페이스나 탭 (시스템에 의존적임) 
cntrl : 아스키코드에서의 127 이상의 문자와 32 이하의 제어문자 
(한글의 첫째바이트가 127 이상이므로 제어문자로 취급됨 :() 
digit : 숫자 
graph : 스페이스는 제외되고 나머지는 'print' 항목과 같음. 
lower : 소문자 
print : 아스키코드에서 32에서 126까지의 찍을 수 있는 문자 
punct : 제어문자도 아니고 알파벳.숫자도 아닌 문자 
space : 스페이스, 케리지 리턴, 뉴라인, 수직 탭, 폼피드 
upper : 대문자 
xdigit : 16진수, 0-9, a-f, A-F 
 
[[:alnum:]]은 [a-zA-Z0-9] 와 같은 의미다. 
[[:alpha:]]은 [a-zA-Z] 와 같은 의미다. 
문자열 오퍼레이터는 [] 사이에서만 효력을 발휘한다. 
그리고 반대의 의미도 가능하다. 
[^[:alnum:]] 은 알파벳과 숫자의 조합이 아닌것을 말한다. 
[^a-zA-Z0-9] 와 같이 사용될수도 있다. 
 
'3-2 {}'는 {} 앞에 있는 문자나 문자열의 개수를 정하는 것이다. 
예) "ab" 는 "abb"를 나타낸다. 즉 b의 개수가 2개를 나타낸다. 
"ab{2,}" 는 abb, abbbbb 등 b의 개수가 2개 이상을 나타낸다. 
"ab{3,5}" 는 abbb, abbbb, abbbbb 와 같이 b가 3개에서 5개 까지를 나타낸다. 
 
3-3 '()' 는 ()안에 있는 글자들을 그룹화 한다. 
예) a(bc)* 는 a, abc abcbc 등 'bc'가 없거나 하나 이상인 경우이다. 
"a(bc)" 는 abcbc 를 나타낸다. 
 
3-4 '|' 는 OR 연산자 기능을 한다. 
"a|b" 는 a 또는 b 둘중 하나를 나타낸다. 
참고할것은 기호인데 이것은 . (, ) 등 단지 다음에 오는것이 문자라는것을 
의미한다. 어떤한 처리도 없이 문자로만 인식한다. 
{1,3} 하고 하면 {1,3} 와는 다르다. 
 
4. 기초 활용 
"a(bc)*" 는 a라는 문자를 포함하고 bc라는 문자열이 없거나 계속반복되는 문자열이다. 
이것은 a, abc ,abcbc abcbcbc.... 등의 문자열을 의미한다. 
"a(bc){1,5}" 는 a 라는 문자를 포함하고 bc 라는 문자를 묶은 형태인데. bc 라는 문자가 
한번에서 5번까지를 말한다. --말이 더 어렵다.... 
이것은 abc,abcbc,abcbc,abcbcbc,abcbcbcbc,abcbcbcbcbc 의 문자열을 의미한다. 
^[1-9][0-9]*$ 는 자연수를 표시할수 있다. 
^(0|[1-9][0-9]*)$ 는 0을 포함하는 자연수 
^(0|-?[1-9][0-9]*)$ 정수표시 
^[0-9]+(.[0-9]+)?$ 소숫점 표시 
^[0-9]+(.[0-9])?$ 소수점 둘째자리 까지 
^[0-9]+(.[0-9]{1,2})?$ 소수점 둘째자리나 첫째자리 
^[0-9]{1,3}(,[0-9])*(.[0-9]{1,2})?$ 돈의 표시... 
(센트까지 표시가능 예 2,200.20 : 이천이백이십센트 또는 이천이백이십전 맞나?) 
 
5. 복합활용 
5-1 메일 주소 체킹.. 
5-1-1 : 유저명@도메인명 
유저명 : 대문자, 소문자, 숫자 그리고 '.' '-' '_' 을 가질 수있지만 . 로 시작해서는 안된다. 
[_0-9a-zA-Z-]+(.[_0-9a-zA-Z]+)* 
이때에는 eregi 를 사용할때까 아닌 ereg 를 사용할때이다. eregi 함수는 대소문자구분이 없다. 
^[_a-z0-9-]+(.[_a-z0-9-]+)*$ eregi 함수를 사용할때... 
 
5-1-2 : 도메인 : 유저명과 기본적으로는 같지만 _ 가 없다. 
^[a-z0-9-]+(.[a-z0-9-]+)*$ 
 
5-1-3 : 메일 주소 체킹 
위의 것의 조합이다. 
^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$ 
 
5-2 URL 에 http:// 붙여주기 
URL 은 대문자, 소문자, 숫자 ,'.','_','=','&','?','~','@','/','+' 를 사용 할수 있다 
즉 http://([0-9a-zA-Z./@~?&=_]+) 가 된다. 


기본적인 것들은 이글만으로도 상당히 도움이 될 것이다.



기타 - 주로 쓰이는 정규표현식

숫자만 가능 : [ 0 ~ 9 ] 주의 : 띄어쓰기 불가능
/^[0-9]+$/
 
 이메일 형식만 가능
/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/
 
한글만 가능 : [ 가나다라 ... ] 주의 : ㄱㄴㄷ... 형식으로는 입력 불가능 , 띄어쓰기 불가능
/^[가-힣]+$/
 
한글,띄어쓰기만 가능 : [ 가나다라 ... ] 주의 : ㄱㄴㄷ... 형식으로는 입력 불가능 , 띄어쓰기 가능
/^[가-힣\s]+$/
 
영문만 가능 :
/^[a-zA-Z]+$/
 
 영문,띄어쓰기만 가능
/^[a-zA-Z\s]+$/
 
전화번호 형태 : 전화번호 형태 000-0000-0000 만 받는다. ]
/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/
 
도메인 형태, http:// https:// 포함안해도 되고 해도 되고
/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/
 
도메인 형태, http:// https:// 꼭 포함
/^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/
 
도메인 형태, http:// https:// 포함하면 안됨
/^[^((http(s?))\:\/\/)]([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/
 
한글과 영문만 가능
/^[가-힣a-zA-Z]+$/;
 
숫자,알파벳만 가능
/^[a-zA-Z0-9]+$/;
 
주민번호, -까지 포함된 문자열로 검색
/^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$/

List of Articles
번호 제목 날짜 조회 수
280 PHP와 HTML과 자바스크립트의 관계 2021.03.26 311
279 TIFF, GIF 여러장 변환 file 2021.03.26 323
» 정규표현식 2021.03.26 311
277 date() 함수의 출력 형식 2021.03.26 241
276 확장자 추출 하기 2021.03.26 307
275 서브도메인 세션 공유 2021.03.26 537
274 가변변수로 만든 배열 2021.03.26 272
273 HEREDOC <<< ( PHP에서 echo로 HTML쉽게 표시하기 ) 2021.03.26 371
272 배열 연산자 []= 에 대해서 2021.03.26 231
271 Predefined Variables (미리 정의된 변수들) 2021.03.26 274
270 current() next() key() 그외 배열관련 함수 2021.03.26 253
269 비교연산자 ( === 에 관해서 ) 2021.03.25 307
268 큰따옴표(") 와 작은따옴표(') 2021.03.25 270
267 mysql_free_result(); 관련 오류 2021.03.25 288
266 phpMyAdmin WebMysql 에 CSV 엑셀 파일 업로드 입력하기 ( Excel / Upload / data / 데이터 / 데이타 ) file 2021.03.25 740
265 PHP + 유튜브(youtube) 동영상 업로드 연동 소스 2021.01.21 1135
264 다중파일 업로드 + 이미지 미리보기 (Javascript, jQuery ) file 2020.12.15 912
263 경로 제외한 파일 이름만 선택하는 방법, Basename() 2020.11.23 429
262 쿠키 확인 후 만료시 세션 파괴하는 방법 2020.11.23 314
261 DAUM 지도 API 좌표→주소(주소->좌표) 변환 2020.10.05 431
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved