일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- #image
- jquery
- #이미지
- #뉴스
- #jQuery
- #CSS
- #홈페이지
- #쇼핑몰
- CSS
- 쇼핑몰
- #cgimall
- 해피CGI
- 홈페이지제작
- 홈페이지
- #솔루션
- #동영상
- #해피CGI
- php
- 게시판
- 솔루션
- happycgi
- #홈페이지제작
- #업종별
- 웹솔루션
- 사이트제작
- CGIMALL
- 해피씨지아이
- #웹솔루션
- #happycgi
- javascript
- Today
- Total
웹솔루션개발 22년 노하우! 해피CGI의 모든것
[해피CGI][cgimall] 날짜 패턴 검사와 후참조(backreference) 본문
날짜 입력값의 패턴 검사를 해 보겠습니다. 날짜 입력값이 yyyy-mm-dd나 yyyy/mm/dd는 인정하고 그 외의 패턴은 인정하지 않는다고 한다면 다음과 같이 간단한 정규식을 사용하면 됩니다.
[프로그램코드]
여기서 상세한 날짜 범위에 대한 검증은 생략하겠습니다. 이 팁의 촛점은 그 것이 아니라 구분자에 관한 것이니까요. 얼핏생각하면 패턴 검사를
[프로그램코드]
와 같이 하면 될 것이라고 생각할 수 있습니다. 하지만, 이 경우는 yyyy-mm/dd나 yyyy/mm-dd도 옳은 것으로 인정해 주기 때문에, 썩 좋은 해법이라고 보기 어렵습니다. 그래서
[프로그램코드]
라고 할 수도 있으나, 그 보다는 맨 위의
[프로그램코드]
가 훨씬 간결합니다. \1은 후참조(backreference)라고 합니다. 정규식 패턴 내에서 앞의 괄호가 일치할 때, 패턴 내부에서 다시 참조할 수 있도록 별도로 저장해둔 내용을 참조하는 것입니다. 이 것은 패턴 외부에서 $1, $2, $3...를 사용하는 것과는 달리, 패턴 내부에서 사용합니다. 그래서 년과 월의 사이에 사용되는 구분자가 똑같이 월과 일의 사이에서 사용된 경우에만 올바른 패턴으로 결정할 수 있게 됩니다. 후참조 역시 $1, $2, $3...와 같이 \1, \2, \3...로 사용됩니다. 만일 날짜 + 시간 패턴을 검사한다면, 다음과 같이 사용할 수 있습니다.
[프로그램코드]
정규식의 세계는 정말 깊습니다. 이 글은 http://www.perl.or.kr/tips/backref.html에서 발췌된 글입니다.
[프로그램코드]
if( $dateinput =~ m|^\d{4}([-/])\d{1,2}\1\d{1,2}$| ) { print "Good\n"; } else { print "Not good\n"; } |
여기서 상세한 날짜 범위에 대한 검증은 생략하겠습니다. 이 팁의 촛점은 그 것이 아니라 구분자에 관한 것이니까요. 얼핏생각하면 패턴 검사를
[프로그램코드]
$dateinput =~ m|^\d{4}([-/])\d{1,2}[-/]\d{1,2}$| |
와 같이 하면 될 것이라고 생각할 수 있습니다. 하지만, 이 경우는 yyyy-mm/dd나 yyyy/mm-dd도 옳은 것으로 인정해 주기 때문에, 썩 좋은 해법이라고 보기 어렵습니다. 그래서
[프로그램코드]
$dateinput =~ m|^\d{4}-\d{1,2}-\d{1,2}$| or $dateinput =~ m|^\d{4}/\d{1,2}/\d{1,2}$| |
라고 할 수도 있으나, 그 보다는 맨 위의
[프로그램코드]
$dateinput =~ m|^\d{4}([-/])\d{1,2}\1\d{1,2}$| |
가 훨씬 간결합니다. \1은 후참조(backreference)라고 합니다. 정규식 패턴 내에서 앞의 괄호가 일치할 때, 패턴 내부에서 다시 참조할 수 있도록 별도로 저장해둔 내용을 참조하는 것입니다. 이 것은 패턴 외부에서 $1, $2, $3...를 사용하는 것과는 달리, 패턴 내부에서 사용합니다. 그래서 년과 월의 사이에 사용되는 구분자가 똑같이 월과 일의 사이에서 사용된 경우에만 올바른 패턴으로 결정할 수 있게 됩니다. 후참조 역시 $1, $2, $3...와 같이 \1, \2, \3...로 사용됩니다. 만일 날짜 + 시간 패턴을 검사한다면, 다음과 같이 사용할 수 있습니다.
[프로그램코드]
)\d{1,2}\1\d{1,2} \d\d([-:])\d\d\2\d\d$| |
정규식의 세계는 정말 깊습니다. 이 글은 http://www.perl.or.kr/tips/backref.html에서 발췌된 글입니다.
'웹프로그램밍 자료실 > 알짜자료 골드팁' 카테고리의 다른 글
[해피CGI][cgimall] 펄모듈 동적으로 로드하기 (use와 require의 차이점) (0) | 2017.03.07 |
---|---|
[해피CGI][cgimall] 다른 프로그램을 실행시켜 출력내용 읽기 (0) | 2017.03.03 |
[해피CGI][cgimall] 주민등록번호 자바스크립트로 체크하기 (0) | 2017.02.27 |
[해피CGI][cgimall] mysql 쿼리로 이번달과 이번해 숫자로 뽑아내기 (0) | 2017.02.23 |
[해피CGI][cgimall] 자바스크립트로 이전으로 돌아가기를 링크걸자 (0) | 2017.02.21 |
Comments