Backend/php

[PHP] 정규표현식 preg_match() (1) - 한글 검사 패턴

민57 2020. 3. 12. 19:47

 

정규표현식이란?

어떠한 값에 대해서 그 값이 한글로만 구성되어 있는지 영어로만 구성되어 있는지 또는 어떤 특별한 패턴을 지키고 있는지에 대해 체크할 때 사용하는 방식. 예를 들어 회원가입을 할 때 전화번호 또는 이메일 주소가 옳은 형식을 갖추었는지를 검사할 수 있다.

 

preg_match() : 정규 표현식의 패턴을 사용할 때 사용되는 함수
구성
preg_match(패턴, 검사할 텍스트, 반환할 패턴 결과를 받을 변수)

 

패턴은 싱글쿼테이션 '과 슬래시 / 사이에 입력한다.

 

첫 번째 글자를 적용하는 기호는 캐럿 기호 이다.

끝나는 글자를 적용하는 기호는 달러 기호 $이다.

 

문자열의 값이 a인지 확인하는 패턴식을 적용한 예제이다.

<?php 
    $pattern = '/^a$/';

    $str = 'a';

    if (preg_match($pattern, $str, $matchResult)) {
        echo "값 {$str}는 정규식 표현에 적합한 값이다.";
    } else {
        echo "값 {$str}는 정규식 표현에 적합하지 않은 값이다.";
    }
?>

 

패턴식은 검사할 바이트 수나 횟수를 지정하지 않으면 기본적으로 1byte를 검사한다.

고로 변수 str에 aaa를 넣게 되면 else 문이 출력된다.

 

1byte 이상의 값을 검사하기 위해서는 패턴식을 검사하는 값 뒤에 1byte 이상을 검사하는 기호로 플러스 + 를 사용한다.

변수 pattern을 '/^a+$/'로 변경하면 문자열이 1byte 이상이여도 패턴식 검사에 문제가 없다.

 

 


 

정규표현식 한글 검사

한글은 '가'로 시작하여 '힣'으로 끝나며 한 글자당 3byte를 차지한다.

간격은 대괄호로 표시하고 패턴 검사할 byte는 간격 뒤에 중괄호를 사용하여 검사할 byte 수를 지정한다.

 

한글 1글자 검사하기 한글 3글자 검사하기 한글 3글자~5글자 검사하기 한글 3글자 이상 검사하기
$ptn = '/^[가-힣]{3}$/'; $ptn = '/^[가-힣]{9}$/'; $ptn = '/^[가-힣]{9, 15}$/'; $ptn = '/^[가-힣]{9,}$/';

 

값이 한글로만 구성되어 있는지 확인하는 예제

 

<?php 
    $pattern = '/^[가-힣]{3,}$/';
    
    $str = "홍길동";

    if (preg_match($pattern, $str, $macheResult)) {
        echo "{$str}은(는) 적합한 이름입니다.";
    } else { echo "{$str}은(는) 적합하지 않은 이름입니다."; }
?>

 

Result

홍길동은(는) 적합한 이름입니다.

단, 띄어쓰기는 허용되지 않는다.

 

 

 

728x90