wasup
정규식 Regular Expression 본문
반응형
알아두면 유용하지만 외우기는 힘든 정규식.
때때로 큰 도움이 되었어서 남긴다.
출처는 각 코드블럭 하단에!
정규식 (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]
---
반응형
'IT etc > Tip' 카테고리의 다른 글
유용한 참고링크) #5 스프레드(Sprite) 이미지 생성 (0) | 2020.11.29 |
---|---|
유용한 참고링크) #4 사이트맵, Site Map (0) | 2020.11.28 |
유용한 참고링크) #3 배경투명화, 누끼따기 (0) | 2020.11.27 |
유용한 참고링크) #2 이미지맵 (0) | 2020.11.26 |
유용한 참고링크) #1 비디오프레소, 동영상 용량 줄이기 (0) | 2020.11.23 |
Comments