wasup

정규식 Regular Expression 본문

IT etc/Tip

정규식 Regular Expression

wasupup 2020. 11. 25. 12:51
반응형

알아두면 유용하지만 외우기는 힘든 정규식.

때때로 큰 도움이 되었어서 남긴다.

 

출처는 각 코드블럭 하단에!

 

 

 

정규식 (Regular Expression)을 이용한 데이터 유효성 검사
PCRE(Perl Compatible Regular Expression)
결과로 TRUE/FALSE를 반환함

//
f="[0-9a-zA-Z_+.-\:\/\<\?\s\>\@\#\=\%\-\&]*
f="#none
title="[0-9a-zA-Z가-힣\s]*
title="페이지 이동
alt="[0-9a-zA-Z가-힣\s\,\#]*
alt="템플릿 이미지

href="(.*)"
href="#none"
title="(.*)"
title="페이지 이동"
alt="(.*)"
alt="템플릿 이미지"
//

1. 기본 문법 규칙 
 
/^  : 정규식의 시작
/   : 끝
$   : 표현식의 끝
\w  : 한 자리의 문자, 숫자
\d  : 한 자리의 숫자
.   : 한 자리의 문자
 
 
2. 수량 한정을 의미하는 기초 문법(반복)
*   : >=0
+   : >=1
?   : 0 or 1회
{n} : n 회
{min, max} : from min to max
 
3. Flag의 표현
g   : Global의 약자, 패턴에 맞는 문자 찾기
i   : ignore case, 대소문자 무시
m   : mulitline, 여러줄
 
4. 대괄호[ ]
[문자]  : 괄호안의 문자 하나와 매치
  예: [ch]
[^문자] : not 
[문자1-문자2] : 문자1과 문자2 사이의 값과 매치
  예 [a-z]는 a,b,c,..., x, y, z와 매치
 
5. 특수문자
\f : 폼피드
\r : 캐리지 리턴
\n : new line
\t : tab
\0 : null
[\b] : back space
\s : 공백문자
\S : 공백이 아닌 문자
\w : 알파벳 문자, 숫자
\W : 알파벳 문자, 숫자가 아닌 문자
\d : 정수
\D : 정수가 아닌 문자

6. 정규식 표현 예제

예제1 : 휴대전화번호
/^\d{3}-\d{3,4}-\d{4}$/;
 
정규식의 표현 방법은 정답이 정해진 것이 아니다.
 
이 예제의 경우 앞에 숫자 3자리-숫자3또는 4자리-숫자4자리의 형식으로 검사한 것을 의미한다.
 
만약 휴대폰 번호에서 맨앞의 숫자는 반드시 01로 시작하고, 세번째글짜가 0,1,6,7,8,9만 허용할 수도 있다.
 
즉, 010, 011, 016, 017, 018, 019 만 허용하는 것이 보다 더 정확한 수일 수 있다.
 
/^01[016789]-\d{3,4}-\d{4}$/;
 
이런 표현으로 하면 되지 않을까?
 
정답은 없기 때문에 자신이 필요로하는 룰을 정하면 되는 것이다.
 
예제 2 : ID나 비밀번호 검사
/^[a-z0-9_]{4,20}$;
 
예제 3 : 특정 날짜 형식 (2012/06/05)
/^\d{2,4}\/\d{2}\/\d{2}$/
 
7. 자바스크립트
var regexp = /^\d{3}-\d{3,4}-\d{4}$/;
if(!regexp.test(document.form.h_phone.value)) {
// error
}
이 식에서 보면 if()문 안에 document.form.h_phone.value가 있기 때문에 h_phone 는 입력창의 필드이름이다.
 
그러므로 PHP로 구현을 한다면 다음과 같은형식을 유지해야 할것이다.
<script>
   function check_error()
   {
      var form = document.test_form;
      var regexp = /^\d{3}-\d{3,4}-\d{4}$/;
      if(!regexp.test(form.mobile.value)) {
        alert('휴대폰 번호의 형식은 010-1234-5678 입니다');
        form.mobile.focus();
        return false;
      }
  }
</script>
 
<form name=test_form method=post action='go.php' onSubmit="return check_error()">
  휴대전호 <input type=text name=mobile> 형식 010-1234-5678 <br>
  <input type=submit name=submit value='실행하기'>
</form>

---
출처^ : https://m.blog.naver.com/PostView.nhn?blogId=m5683&logNo=110140088345&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F
---

 

 

 

 

자주 쓰이는 정규식(Regular Expression)

전자우편 주소:
/^[a-z0-9_+.-]+@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/

URL:
/^(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/

HTML 태그 - HTML tags:
/\<(/?[^\>]+)\>/

전화 번호 - 예, 123-123-2344 혹은 123-1234-1234:
/(\d{3}).*(\d{3}).*(\d{4})/

날짜 - 예, 3/28/2007 혹은 3/28/07:
/^\d{1,2}\/\d{1,2}\/\d{2,4}$/

jpg, gif 또는 png 확장자를 가진 그림 파일명:
/([^\s]+(?=\.(jpg|gif|png))\.\2)/

1부터 50 사이의 번호 - 1과 50 포함:
/^[1-9]{1}$|^[1-4]{1}[0-9]{1}$|^50$/

16 진수로 된 색깔 번호:
/#?([A-Fa-f0-9]){3}(([A-Fa-f0-9]){3})?/

적어도 소문자 하나, 대문자 하나, 숫자 하나가 포함되어 있는 문자열(8글자 이상 15글자 이하) - 올바른 암호 형식을 확인할 때 사용될 수 있음:
/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,15}/

숫자만 가능 : [ 0 ~ 9 ] 주의 : 띄어쓰기 불가능
/^[0-9]+$/
 
 이메일 형식만 가능
/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/
 
한글만 가능 : [ 가나다라 ... ] 주의 : ㄱㄴㄷ... 형식으로는 입력 불가능 , 띄어쓰기 불가능
/^[가-힣]+$/
 
한글,띄어쓰기만 가능 : [ 가나다라 ... ] 주의 : ㄱㄴㄷ... 형식으로는 입력 불가능 , 띄어쓰기 가능
/^[가-힣\s]+$/
 
영문만 가능 :
/^[a-zA-Z]+$/
 
 영문,띄어쓰기만 가능
/^[a-zA-Z\s]+$/
 
전화번호 형태 : 전화번호 형태 000-0000-0000 만 받는다. ]
/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/
 
도메인 형태, http:// https:// 포함안해도 되고 해도 되고
/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/
 
도메인 형태, http:// https:// 꼭 포함
/^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/
 
도메인 형태, http:// https:// 포함하면 안됨
/^[^((http(s?))\:\/\/)]([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/
 
한글과 영문만 가능
/^[가-힣a-zA-Z]+$/;
 
숫자,알파벳만 가능
/^[a-zA-Z0-9]+$/;
 
주민번호, -까지 포함된 문자열로 검색
/^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$/

---
출처^ : http://gocoding.tistory.com/93 [Developer Factory]
---

 

반응형
Comments