[PHP] 정규표현식 영문 소문자 검사

2022. 9. 19. 13:09Program/PHP

074_PHP 정규표현식 영문 소문자 검사

[요약]

  • 변수의 값이 영문 소문자인지를 정규표현식을 사용해 검사하는 방법에 대해 알아보자.

문자가 영문 소문자로만 구성되었는지를 정규식을 사용해 알아보자.

영문 소문자는 'a'로 시작해 'z'로 끝난다.

따라서 범위를 지정하면 다음과 같다.

a-z

 

소문자로 시작하고 소문자로 끝나는 기호를 추가해 패턴식으로 만들면 다음과 같다.

'/^[a-z]$/';

 

1byte(1글자) 이상 검사하는 식으로 변경하면 패턴식은 다음과 같다.

'/^[a-z]+$/';

다음은 문자열이 영문 소문자로만 구성되어 있는지 확인하는 예제이다.

[예제: 76-1_regExp.php ]

<?php
    // 패턴 대입
    $pattern = '/^[a-z]+$/';

    $str = 'playdaddy';

    if (preg_match($pattern, $str, $matches)) {
      echo "값 {$str}은(는) 정규식 표현에 적합한 값입니다.";
      echo "<pre>";
      var_dump($metches);
      echo "</pre>";
    } else {
      echo "값에 영문 소문자 외의 문자가 있는지 확인 요망.";
    }
?>

실행결과

만약 위의 코드 변수 str에 영문 소문자가 아닌 값을 하나 넣는다면 패턴식에 어긋나게 된다.

 

다음은 변수 str의 마지막에 영문 대문자를 넣을때의 결과이다.

 

영문 대문자와 소문자 관계없이 영문으로만 구성된 문자열을 확인하려면 패턴식의 범위에 영문 대문자의 범위와 영문 소문자의 범위를 함께 기입한다.

 

다음은 영문 대문자와 소문자 범위를 함께 기입한 패턴식이다.

'/^[a-zA-Z]+$/';

 

영문 대문자, 소문자 그리고 한글로 구성된 패턴식을 만들면 다음과 같다.

'/^[a-zA-Z가-힣]+$/';

[예제: 76-2_regExp.php ]

<?php
    // 패턴 대입
    $pattern = '/^[a-zA-Z가-힣]+$/';

    $str = "Hello안녕하세요";

    if (preg_match($pattern, $str, $matches)) {
      echo "값 {$str}은(는) 정규식 표현에 적합한 값입니다.";
      echo "<pre>";
      var_dump($matches);
      echo "</pre>";
    } else {
      echo "값에 영문과 한글 외의 문자가 있는지 확인 요망.";
    }
?>

실행결과

검사할 문자열 'Hello안녕하세요'에는 띄어쓰기가 없다.

띄어쓰기는 허용하지 않고 있기 떄문에 패턴식에서 어긋나게 된다.

 

띄어쓰기를 적용하려면 패턴식의 간격 내에 띄어쓰기를 하나 넣는다.

또한 '안녕하세요.'와 같이 끝에 .(점)을 넣으려면 패턴식의 범위 내에 .(점)을 입력한다.

 

다음은 띄어쓰기와 .(점)이 있는 것도 허용하는 패턴식이다.

'/^[a-zA-Z가-힣. ]+$/';

위 패턴식의 .(점) 뒤에 키보드의 스페이스바로 띄어쓰기를 입력했다.

펴턴식은 범위 내의 값이 있는지 없는지는 따지지 않으며 범위 내의 값이 아닌 값이 있는지를 검사한다.

그러므로 검사할 패턴식에 꼭 .(점)이나 스페이스 영문 소문자, 영문 대문자, 한글을 모두 넣지 않아도 패턴식에 어긋나지 않는다.


다음은 바로 위의 패턴식을 사용한 예제이다.

[예제: 76-2_regExp.php ]

<?php
    // 패턴 대입
    $pattern = '/^[a-zA-Z가-힣. ]+$/';

    $str = "Hello. 안녕하세요.";  // Hello. 다음에 띄어쓰기가 있다.

    if (preg_match($pattern, $str, $matches)) {
      echo "값 {$str}은(는) 정규식 표현에 적합한 값입니다.";
      echo "<pre>";
      var_dump($matches);
      echo "</pre>";
    } else {
      echo "값에 영문, 한글, .(점) 그리고 띄어쓰기 외의 문자가 있는지 확인 요망.";
    }
?>

실행결과

 

 

 


 

 

 

초보자를 위한 PHP 200제
김태영 지음 | 정보문화사