728x90
반응형

[정규식] 영문 + 숫자 + 특수문자 + 8자리 이상

function validateString(event){
    //const pattern = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~@#$!%*?&])[a-zA-Z\d~@#$!%*?&]+$/       
    //영문 + 숫자 + 특수문자 정규식
	const pattern = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~@#$!%*?&])[a-zA-Z\d~@#$!%*?&]{8,}$/          
    //영문 + 숫자 + 특수문자 + 8자리 이상 정규식
	return !/[ㄱ-ㅎㅏ-ㅣ가-힣]/.test(event) && pattern.test(event);                           
    //한글 입력 시 false 리턴
}

 

위의 패턴을 사용하여 유효성 검사를 수행하면 다음과 같은 조건을 충족해야 한다.

  • 최소한 1개의 영문 소문자를 포함
  • 최소한 1개의 숫자를 포함
  • 최소한 1개의 특수문자 포함
  • 위 사항 모두 충족 후 8자리 이상
  • 한글 입력 불가 (한글 입력 시 false return)

 

HTML 사용 예시

See the Pen Untitled by 한민우 (@enecjjir-the-flexboxer) on CodePen.

<!DOCTYPE html>
<html>
<head>
  <title>JavaScript 예시</title>
</head>
<body>
  <h1>JavaScript 예시</h1>

  <form>
    <label for="inputString">문자열:</label>
    <input type="text" id="inputString">
    <button onclick="validateAndDisplay()">검사</button>
  </form>

  <p id="result"></p>

  <script>
    function validateString(input) {
      var pattern = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~@#$!%*?&])[a-zA-Z\d~@#$!%*?&]{8,}$/;
      return !/[ㄱ-ㅎㅏ-ㅣ가-힣]/.test(input) && pattern.test(input);
    }

    function validateAndDisplay() {
      var input = document.getElementById("inputString").value;
      var isValid = validateString(input);
      var resultElement = document.getElementById("result");

      if (isValid) {
        resultElement.textContent = "유효한 문자열입니다.";
      } else {
        resultElement.textContent = "유효하지 않은 문자열입니다.";
      }
    }
  </script>
</body>
</html>

결과는 <p> 태그에서 출력

728x90
반응형