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 | 이스케이프 되거나 문자 클래스의 내부를 제외하고 패턴의 공백 문자를 무시 |

댓글 없음:
댓글 쓰기