2022. 9. 19. 15:32ㆍProgram/PHP
076_PHP 정규표현식으로 휴대전화번호 유효성 검사하기
[요약]
- 정규표현식을 이용하여 휴대전화번호의 패턴을 검사하는 방법에 대해 알아보자.
어떠한 값이 휴대전화번호의 규직을 지키고 있는지에 대해 검사하는 패턴식을 만들어보자.
예전에는 휴대전화번호의 앞 번호가 통신사마다 각각 달랐으나 지금은 010으로 통일된 번호를 사용한다.
하지만 아직도 011, 016, 017, 018, 019 번호는 사용되고 있다.
이것을 식으로 만들려면 휴대전화번호의 처음에 011, 016, 017, 018, 019가 있어야 함을 의미한다.
여러개의 값이 or의 조건으로 처음에 위치해야 함을 패턴식으로 표현하려면 가로를 사용하고 or의 의미로 기호 '|'를 사용한다.
패턴식으로 만들면 다음과 같다.
$pattern = '/^(010|011|016|017|018|019)/';
처음에 오는 문자를 의미하는 기호 '^'를 사용했으므로 011, 016, 017, 018, 019로 시작하지 않으면 패턴 규칙에 어긋나게 된다.
앞에 3자리 다음에는 '-'(하이픈)이 붙으므로 괄호 밖에 '-'(하이픈)을 사용한다.
패턴식으로 만들면 다음과 같다.
$pattern = '/^(010|011|016|017|018|019)-/';
휴대전화번호의 가운데 번호는 3자리이거나 4자리로 구성되며 0으로 시작하지 않는 규칙이 있다.
따라서 처음에 0이 위치하지 않는 규칙을 만들어야 한다.
처음에 위치하는 문자를 지정하는 기호로 '^'를 사용한다.
이 기호는 []의 밖에 위차하면 처음에 위치하는 문자를 지정하는 기호로 사용하지만 []의 안에 있다면 처음에 위치하면 안 되는 문자를 지정하게 된다. 따라서 처음에 0이 위치하지 않게끔 패턴식을 만들려면 다음과 같이 한다.
[^0]
이후에 0부터 09까지 위치하는 패턴식을 더하며 이 숫자는 3자리이거나 4자리이므로 3vyte와 4byte를 검사하는 패턴식을 추가한다.
[^0][0-9]{3,4}
위의 패턴식은 앞에 0이 위치하지 않으면서 0부터 9가 3글자이거나 4글자임을 검사하는 패턴식이다.
휴대전화번호 앞 3자리를 검사하는 패턴식과 함치면 다음과 같다.
$pattern = '/^(010|011|016|017|018|019)-[^0][0-0]{3,4}-/';
휴대전화번호 뒷자리는 앞에 0이 위치해도 되며 모두 4글자로 사용되므로 패턴식은 다음과 같다.
[0-9]{4}
최종적으로 휴대전화번호를 검사하는 패턴식은 다음과 같다.
$pattern = '/^(010|011|016|017|018|019)-[^0][0-0]{3,4}-[0-9]{4}/';
다음은 휴대전화번호 패턴식을 다룬 예제이다.
[예제: 78_regExp.php ]
<?php
// 패턴 대입
$pattern = '/^(010|011|016|017|018|019)-[^0][0-9]{3,4}-[0-9]{4}$/';
$str = '010-1234-5678';
if (preg_match($pattern, $str, $matches)) {
echo "값 {$str}은(는) 정규식 표현에 적합한 값입니다.";
echo "<pre>";
var_dump($matches);
echo "</pre>";
} else {
echo "값에 숫자외의 문자가 있는지 확인 요망.";
}
?>
실행결과
초보자를 위한 PHP 200제
김태영 지음 | 정보문화사
'Program > PHP' 카테고리의 다른 글
[PHP] filter_Var() 함수로 이메일 유효성 검사하기 (0) | 2022.09.20 |
---|---|
[PHP] 정규표현식 이메일 주소 유효성 검사하기 (1) | 2022.09.20 |
[PHP] 정규표현식 숫자 검사 (0) | 2022.09.19 |
[PHP] 정규표현식 영문 소문자 검사 (1) | 2022.09.19 |
[PHP] 정규표현식 영문 대문자 검사 (2) | 2022.09.19 |