preg_match() 함수에서는 Perl 호환의 정규 표현식으로, mb_ereg() 함수에서는 mbstring 정규 표현식으로 매칭됨.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>정규 표현식으로 패턴 매치</title> </head> <body> <div> <?php echo '<p>휴대 전화번호 형식 확인</p>'; echo '<ul>'; // 휴대 전화번호 형식을 확인하는 정규 표현식 // \A(010|011|080)은 문자열의 앞부분이 010, 011, 080 중 어느 것인지 확인 // -?는 하이픈 문자 또는 하이픈이 없는 경우를 포함해서 일치하는지 확인 // \d{4}는 네 개의 문자가 숫자인지 확인 // \d{4}\z는 문자열의 긑이 네 문자의 숫자로 된 것을 확인 // 예) 010-1234-5678, 01011112222 $telPattern = '/\A(010|011|080)-?\d{4}-?\d{4}\z/'; $tel1 = '010-1234-5678'; echo '<li>' . $tel1; if( preg_match($telPattern, $tel1) ) { echo ' 는 전화번호 형식과 일치함</li>'; } else { echo ' 는 전화번호 형식과 일치하지 않음</li>'; } $tel2 = '01112345678'; echo '<li>' . $tel2; if( preg_match($telPattern, $tel2) ) { echo ' 는 전화번호 형식과 일치함</li>'; } else { echo ' 는 전화번호 형식과 일치하지 않음</li>'; } $tel3 = 'abc-defg-hijk'; echo '<li>' . $tel3; if( preg_match($telPattern, $tel3) ) { echo ' 는 전화번호 형식과 일치함</li>'; } else { echo ' 는 전화번호 형식과 일치하지 않음</li>'; } echo '</ul>'; echo '<p>우편번호 형식 확인</p>'; echo '<ul>'; $zipPattern = '/\A\d{3}-?\d{3}\z/'; $zip1 = '456-789'; echo '<li>' . $zip1; if( preg_match($zipPattern, $zip1) ) { echo ' 는 우편번호 형식과 일치함</li>'; } else { echo ' 는 우편번호 형식과 일치하지 않음</li>'; } $zip2 = '456002'; echo '<li>' . $zip2; if( preg_match($zipPattern, $zip2) ) { echo ' 는 우편번호 형식과 일치함</li>'; } else { echo ' 는 우편번호 형식과 일치하지 않음</li>'; } $zip3 = 'abc-defg'; echo '<li>' . $zip3; if( preg_match($zipPattern, $zip3) ) { echo ' 는 우편번호 형식과 일치함</li>'; } else { echo ' 는 우편번호 형식과 일치하지 않음</li>'; } echo '</ul>'; ?> </div> </body> </html> |
정규 표현식의 구문
Perl 호환의 정규 표현식에서는 패턴의 전후를 구분 문자로 표시해야 함영숫자, 백슬러시, 공백 문자 외에 임의의 문자를 구분 문자로 사용할 수 있고 주로 슬래시(/)와 해시기호(#), 물결표(~)를 사용함.
구문 | 기능 |
. | 줄 바꿈 문자를 제외한 모든 단일 문자 |
? | 0회 또는 1회만 매치 |
* | 0회 이상 반복 |
+ | 1회 이상 반복 |
{n} | n회 반복 |
{n, m} | n회 이상, m회 이하 반복 |
^ | 문자열(줄)의 시작 |
$ | 문자열(줄)의 끝 |
[] | 문자 클래스, [a-z]의 경우 a부터 z까지 임의의 한 문자 |
\A | 문자열의 시작 |
\z | 문자열의 끝 |
\w | 단어 구성 문자. [a-zA-Z0-9_]와는 다를 수 있으므로 주의 |
\d | 숫자 |
\s | 탭, 공간, 줄 바꿈 등의 공백 문자 |
\S | 공백 문자 외의 모든 문자 |
() | () 패턴의 그룹화 |
패턴 수식자의 예
패턴 수식자 | 기능 |
i | 매칭시 알파벳의 대문자와 소문자를 구별하지 않음 |
m | 줄 단위로 매칭을 진행 |
s | '.'을 줄 바꿈 문자에도 매칭 |
u | 패턴 문자열을 UTF-8 인코딩으로 취급 |
x | 이스케이프 되거나 문자 클래스의 내부를 제외하고 패턴의 공백 문자를 무시 |
댓글 없음:
댓글 쓰기