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