php 정규식 > 그누보드5 팁자료실

그누보드5 팁자료실

php 정규식 정보

php 정규식

본문

# PHP정규식(정규식을 처음 대하면서 메모한 내용입니다.) 


* 메타문자: 정규식을 표현하기위해 특별한 의미를 가진문자이다. 정규식은 작은따옴표로(' ') 감싼다.

 

* \d : 숫자형 문자를 확인한다. 해당위치에 0-9까지 숫자가 위치하는 지 확인하고  \d는 숫자하나를 표시한다. 따라서 숫자 두개는 \d\d  또는 \d{2} 이다.

 

* \s : 빈 문자를 확인한다. 스페이스바로 입력한 경우만 아니라 탭, 새 줄, 엔터를 통한 빈문자도 포함한다 \s 는 하나의 빈문자를 의미한다. 두개의 빈문자는 \s\s 또는 \s{2} 이다.

 

* \w : 알파벳과 숫자형문자 모두를 확인한다. 즉 a-z, A-Z 와 0-9 모두를 일치하는 문자타입으로 확인한다.

 

* ^ : 제공받은 문자열의 시작문자를 가리킨다. 즉 문자열의 첫번째 문자를 확인한다. 즉 문자열의 첫번째 문자를 확인하고 싶을때 사용한다.
ᆞ/ ^ \d{3} / 는 '300 application'을 유효하게 판정한다
ᆞ"^The" 는 "The"로 시작하는 문자열을 말한다.

 

*  ' . ' : 어떤 문자든지 임의의 한 문자를 말한다. 꼭 한 문자가 있어야 한다
ᆞ"x.y"는 xyx, xbz등이고 xyyz는 안된다.

 

*  ' * ' : 바로 앞의 문자가 없거나 하나 이상의 경우를 말한다.
"ab*" 는 a, ab, abbb 등을 말한다

 

*  ' + ' : 바로 앞의 문자를 나타낸다. 꼭 하나 이상이어야 한다.

 

* $ : 제공받은 문자열의 마지막 문자를 가리킨다.  
ᆞ"of despair$" 는 of despair로 끝나는 문자열이다.
ᆞ"ab+" 는 abc, abbb 등이고 a 는 안된다.

 

*  ' ? ' : 바로 앞에 한 문자가 있거나  없는것을 말한다.
ᆞ"ab?" 는 a 또는 ab 를 나타낸다.

 

* { } 는 { } 앞에 있는 문자를 문자나 문자열의 갯수를 나타낸다.
ᆞab{2,} 는 "abb"를 나타낸다  즉 b의 갯수가 2개를 나타낸다.
ᆞab{3,5} 는 "abbb", "abbbb", "abbbbb",를 나타낸다  즉 b의 갯수가 3-5개를 나타낸다.

 

* ( ) 는 ( )안에 있는 글자들을 그룹화 한다.

 

* /  / : 모든 정규식은 슬래시로 시작해 슬래시로 끝난다.

 

* 문자클래스: 여러문자 중 허용가능한 문자를 지정할때 사용한다. 허용가능한 문자, 메타문자를 [  ]로 감싸면된다.
ᆞ[  ]안에서 ^는 허용하지 않는 문자를 의미한다.
ᆞ예:
[ 0-2 ] 는 0,1,2 만 허용된다
[ ^b-f ] 는 b,c,d,e,f 는 허용가능한 문자에서 제외된다.
ᆞalnum: 알파벳과 숫자
ᆞalpha: 알파벳
ᆞblank: 스페이스나 탭


* 정규식에서 예약문자를 문자자체로 사용하려면 문자앞에 \를 추가한다.
예: (555)636-4652
/ ^  \( d{3} \) \d{3} - /d{4} $/

 

*preg_match() 함수로 패턴확인하기 : preg_match()함수는 직접 작성한 하나의 정규표현식과 하나의 문자열을 파라메터로 제공받아 문자열이 정규식과 일치하면 true, 그렇지않으면 false 를 반환한다.
ᆞ예
preg_match( '/ ^ \d{3} - \d{2} - \d{4} $ / ' , '555-02-8897' ) 
해설: 555-02-8897문자열이 이 정규식 / ^ \d{3} - \d{2} - \d{4} $ /을 만족하는지 체크한다.
정규식을 따옴표를 사용해서 문자열 형태로 함수에 넘겨주어야한다.

 

* 추가 번호입력을 사용하는경우: 수량자를 사용한다.
ᆞ{min , max} :중괄호안에 콤마로 구분된 두개의 숫자가 등장하면 그것은 허용가능한 범위를 의미한다. 
특정문자 또는 메타문자의 반복횟수를 2회, 3회, 4회등 원하는대로 지정할수있다.
ᆞ+ :특정문자 또는 메타문자가 반드시 1회  또는 그 이상 등장해야함을 의미하는 수량자이다.
ᆞ* :특정문자 또는 메타문자가 1회  또는 그 이상 등장하지 않아도 됨을 의미하는 수량자이다.
ᆞ? :특정문자 또는 메타문자가 반드시 1회 또는 등장하지 않아야 함을 의미하는 수량자이다.
ᆞ예
/ ^ \d{3} - \d{3} - \d{4}  (-\d{4})?$ /     :?수량자를 사용해 하이픈'-'과 4개의 숫자는 옵션임을 나타낸다.

 

* 문자클래스 :여러문자중 허용가능한 문자를 지정할때 사용한다. 문자클래스를 사용하려면 허용가능한 문자 또는 메타문자를 대괄호[ ]로 감싸면된다.
 ^표시는 허용하지 않는 문자를 의미한다. 문자클래스내에서는 쉼표나 뛰어쓰기도 하나의 문자로 인식한다
ᆞ예
[ 0-2 ] :허용가능한 숫자범위를 지정한다. 0, 1, 2 만 허용한다
[ ^b-f ] :b, c, d, e, f를 허용가능한 문자에서 제외한다.
[ A-D] :A, B, C, D만 허용한다.

 

* 문자클래스로 정돈되어진 패턴(가독성위해 공백사용)
ᆞ/^ [2-9]\d{2} - \d{3} - \d{4} $/

ᆞif 문에 사용하기
if( preg_match( '/ ^ \d{3} \s \d{2} \s \d{4} $ / ' , '555 02 8897' ) ) {
echo ' Valid social security number. ' ;
} else { 
echo ' That social security number is invalid. ' ;
}

 

* preg_replace( $pattern , $replacement , $my_string ) ;

ᆞpreg_replace( ): 문자열의 유효한 패턴을 확인하고 다른 문자열로 대체한다.

ᆞ$pattern: 대체해야할 원하지 않는 문자를 지정한다.

ᆞ$replacement: 원하지 않는 문자를 이 문자로 대체한다.

ᆞ$my_string: 유효성검사 및 대체작업을 할 문자열을 지정한다
예: 2000에서 2009를 2010으로 바꾼다.
$new_year = preg_replace( ' / 200 [ 0-9 ] / ' , ' 2010 ' , ' The year is 2009. ' ) ;

 

 

# 이메일 주소패턴

* @앞의 계정 : 알파벳문자, 숫자등이 와도되며 특별한 제약이 없다.
* /  ^ \w+  / :하나 또는 그 이상의 알파벳, 숫자문자가 가능하다.
ᆞ^ :전체 문자열중 첫번째 문자를 가리킨다.
ᆞ\w+ : 하나 또는 그 이상의 알파벳 또는 숫자형 문자가 가능합니다.

* ! $ & * -  = ^ ` | ~ # % ' + / ? _ { } 이 문자들도 이름에 포함될수있다. 이경우를 감안하면 아래와 같다

* / ^ [ a-z A-Z 0-9 ] [ a-z A-Z 0-9\ . _ \ - & ! = # ] * /
ᆞ [ a-z A-Z 0-9 ] : 첫번째 문자는 이 범위내에서 선택할수있다.
ᆞ [ a-z A-Z 0-9\ . _ \ - & ! = # ] : 나머지 문자는 이부분에서 선택할 수 있다.
ᆞ * : 이 문자들은 있어도 되고 없어도 무방하다.

* 메일 뒷자리
* checkdnsrr( ) : 실제 서버가 등록되어 작동중인 서버인지 확인한다.
ᆞ예
checkdnsrr( 'headfirstlaps.com' ) : 실제 서비스중인 서버라면 1을 반환하고 그렇지 않으면 0을 반환한다. 
ᆞ checkdnsrr( )함수는 서버 주소를 문자열로 전달받는다.

* 이메일유효성검사 코드
if ( ! preg_match ( ' / ^ [ a-z A-Z 0-9 ] [ a-z A-Z 0-9\ . _ \ - & ! = # ] * @ / ' , $email )  {
echo ' Your email address is not valid. <br> ' ;
$output_form = ' yes ' ; 
  }
else if {
//메일서버 문자를 제외한 모든 문자를 제거한다. 즉 빈문자열로 대체한다. $email변수를 대상으로 대체작업을 한다.
$domain = preg_replace ( ' / ^ [ a-z A-Z 0-9 ] [ a-z A-Z 0-9\ . _ \ - & ! = # ] * @ / ' , ' ' , $email ) ;
  }

//domain이 실제 등록되어 있는 메일서버주소인지 확인한다.
if ( ! checkdnsrr( $domain) ) {
echo ' Your email address is valid. <br> ' ;
$output_form = ' yes ' ; 
  }
}

 

 

# 전화번호 데이타 표준화하기
* 원치않는 문자제거하기
$new_phone = preg_replace( ' / [ \(  \) \- \s ] / ' , '  ' , $phone ) ;
ᆞ/ [ \(  \) \- \s ] / 문자열을 공백' '으로 대체한다
ᆞ$phone: 표준화작업을 거친 문자열이 이 변수에 저장되어있다.

* ' . '은 줄바꿈  문자(\n)를 제외한 모든 문자를 대체할수있다.

추천
1

댓글 4개

전체 32 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT