정규식 패턴

설 명 

결 과 

 c[a-z]* 

 c 로 시작하는 영단어

 c, ca, co, car

 c[a-z]

 c 로 시작하는 두 자리 영단어(대소문구분)

 ca, co

 c[a-zA-Z]

 c 로 시작하는 두 자리 영단어(대소문구분않함)

 cA, ca, co

 c[a-zA-Z0-9]c\w

 c 로 시작하고 숫자와 영어로 조합된 두 글자

 cA, ca, co, c0

 .*

 모든 문자열

 전부다

 c.

 c 로 시작하는 두 자리

 cA, ca, co, c., c0, c#

 c.*

 c 로 시작하는 모든 문자열(기호포함)

 cA, ca, co, combat, c#

 c\.

 c. 와 일치하는 문자열 '.'은 패턴작성에 사용되는 문자이므로

 escape 문자인 '\'를 사용해야 한다.

 c.

 c\d

 c[0-9]

 c 와 숫자로 구성된 두 자리 문자열

 c0

 c.*t

 c 로 시작하고 t 로 끝나는 모든 문자열

 combat, count

 [b|c].*

 [bc].*

 [b-c].*

 b 또는 c 로 시작하는 문자열

 bat, baby, count, car

 [^b|c].*

 [^bc].*

 [^b-c].* 

 b 또는 c 로 시작하지 않는 문자열

 date, disc

 .*a.*

 a 를 포함하는 모든 문자열.

 * : 0 또는 그 이상의 문자

 bat, baby, ca, car, date

 .*a.+

 a 를 포함하는 모든 문자열.

 + : 1 또는 그 이상의 문자. '+' 는 '*' 와 달리 반드시 하나 이상의

 문자가 있어야 하므로 a 로 끝나는 단어는 포함되지 않는다.

 bat, baby, car, combat

 [b|c].{2}

 b 또는 c로 시작하는 세 자리 문자열.

 (b 또는 c 다음에 두 자리이므로 모두 세 자리)

 bat, car

 

예제)

1. 정규식을 매개변수로 pattern 클래스의 compile(String regex)을 호출하여 pattern 인스턴스를 생성

EX) Pattern pattern = Pattern.compile("c[a-z]*");

 

2. 정규식으로 비교할 대상을 매개변수로 Pattern 클래스의 Matcher matcher(CharSequenceinput)를 호출해서 

    Matcher 인스턴스를 얻는다.

EX) Matcher matcher = pattern.matcher("비교할 매개변수");

 

3. Matcher 인스턴스에 boolean matches()를 호출해서 정규식으로 부합하는지 확인한다. (return boolean)

if( matcher.matches() )




-    일반적으로 문자열들을 비교하기 위해서 equels 메서드를 사용합니다.

equals() 메서드로 문자열의 내용을 비교하는 것보다는 등가비교연산자(==) 를 이용해서 주소(4 byte)를 비교하는 것이 더 빠르다.

그래서 비교해야 할 문자열의 개수가 많은 경우에는 보다 빠른 문자열검색을 위해서 intern 메서드와

등가비교연산자(==)를 사용하기도 한다.

- Function 만 기재한다. 나중에 봐도 이해가 되겟지...과연?

 

var jsCopyText = function() {
           
            var copyText = $('#acctList option:selected').text();
            var IE = (document.all) ? true : false;
           
            if(IE) {
                window.clipboardData.setData('Text', copyText);
                alert('클립보드에 복사되었습니다.');
            }
            else {
                temp = prompt('복사할 가상계좌입니다. Ctrl+C를 눌러 클립보드에 복사하세요.', copyText);
            }
           
        }

 

- 브라우저가 IE 일경우에는 window.clipboardData.setDate('setName', '클립보드에 복사할 문자');

   IE가 아니면 prompt 를 뛰어서 사용자가 복사할수 있도록 한다.

   위의 예제는 selectBox 의  text 값을 사용자가 쉽게 복사할수 있도록 하기위함이니. prompt 로 띄어서 복사하게 하는

   것 만으로도 충분하닥 생각한다..(변명이지요)

- Console 에서 로그를 보는데 자꾸 화면을 넘어가서 보기가 힘들다. 구글링 하니 Console 제한을 푸는게 있군.

  자세한 설명은 캡쳐로...

  경로 : Window -> Preferences

 

 

 

 

 

- 스프링에서는 간편하고 프레임워크안에서 스케쥴링 하던 quatz 를 annotation 으로 더 간단하게 설정 할 수 있다.

1. applicationContext.xml 같은 bean 을 설정하는 설정파일에

xmlns:context="http://www.springframework.org/schema/context"

http://www.springframework.org/schema/task

http://www.springframework.org/schema/task/spring-task-3.0.xsd

<task:annotation-driven />

 

구문을 입력하면 된다.

EX) 별도의 context-schedule.xml 로 관리(첨부파일 확인)

파일명 : context-schedule.xml  (context-schedule.xml)

 

 

2. 스케쥴링 할 메소드위에 @scheduled 어노테이션을 입력한 후에 시간설정하면 끝

 

3. 시간 설정 @scheduled(cron=" ")  * 리눅스 crontab 과 같은 설정방법

ex> @Scheduled(cron="0 0 02 * * ?") = 매일 새벽2시에 실행

ex> @Scheduled(cron="0 0 02 2,20 * ?") = 매월 2일,20일 새벽2시에 실행

 

4. 스케쥴러 cron 양식? 의미?

 

초 0-59 , - * /
분 0-59 , - * /
시 0-23 , - * /
일 1-31 , - * ? / L W
월 1-12 or JAN-DEC , - * /
요일 1-7 or SUN-SAT , - * ? / L #
년(옵션) 1970-2099 , - * /

* : 모든 값
? : 특정 값 없음
- : 범위 지정에 사용
, : 여러 값 지정 구분에 사용
/ : 초기값과 증가치 설정에 사용
L : 지정할 수 있는 범위의 마지막 값
W : 월~금요일 또는 가장 가까운 월/금요일
# : 몇 번째 무슨 요일 2#1 => 첫 번째 월요일

 

예제)
Expression Meaning
초분시일월주(년)
 "0 0 12 * * ?" : 아무 요일, 매월, 매일 12:00:00
 "0 15 10 ? * *" : 모든 요일, 매월, 아무 날이나 10:15:00
 "0 15 10 * * ?" : 아무 요일, 매월, 매일 10:15:00
 "0 15 10 * * ? *" : 모든 연도, 아무 요일, 매월, 매일 10:15
 "0 15 10 * * ? : 2005" 2005년 아무 요일이나 매월, 매일 10:15
 "0 * 14 * * ?" : 아무 요일, 매월, 매일, 14시 매분 0초
 "0 0/5 14 * * ?" : 아무 요일, 매월, 매일, 14시 매 5분마다 0초
 "0 0/5 14,18 * * ?" : 아무 요일, 매월, 매일, 14시, 18시 매 5분마다 0초
 "0 0-5 14 * * ?" : 아무 요일, 매월, 매일, 14:00 부터 매 14:05까지 매 분 0초
 "0 10,44 14 ? 3 WED" : 3월의 매 주 수요일, 아무 날짜나 14:10:00, 14:44:00
 "0 15 10 ? * MON-FRI" : 월~금, 매월, 아무 날이나 10:15:00
 "0 15 10 15 * ?" : 아무 요일, 매월 15일 10:15:00
 "0 15 10 L * ?" : 아무 요일, 매월 마지막 날 10:15:00
 "0 15 10 ? * 6L" : 매월 마지막 금요일 아무 날이나 10:15:00
 "0 15 10 ? * 6L 2002-2005" : 2002년부터 2005년까지 매월 마지막 금요일 아무 날이나 10:15:00
 "0 15 10 ? * 6#3" : 매월 3번째 금요일 아무 날이나 10:15:00

 

사진도 첨부합니다.

 

 

 

- DB 링크 생성방법 중에 TNSNAMES.ora 에 DB 정보를 추가하고 추가한 정보의 네이밍으로 연결하는방법과

  TNSNAMES.ora 추가없이 생성시 바로 정보를 넣는 방법 두가지가 있는데... 두번째 방법이 쉽고 편하늬까 그걸로...

 

  SQL> CREATE DATABASE LINK 'DB링크 별칭'

           CONNECT TO 'DB링크 접속 ID'

           IDENTIFIED BY 'DB링크 접속 PASSWORD'

           USING 'DB 접속정보'

 

  EX-SQL> CREATE DATABASE LINK DB_LINK_TEST

                CONNECT TO DANIEL

                IDENTIFIED BY DANIEL

                USING '(DESCRIPTION=
                                 (ADDRESS=
                                 (PROTOCOL=TCP)
                                 (HOST=98.28.5.111)
                                 (PORT=1521)
                            )
                                 (CONNECT_DATA=
                                 (SERVER=dedicated)
                                 (SERVICE_NAME=DANIEL)
                            )
                          )';

 

- DB LINK 사용

SQL> SELECT * FROM TABLE명@DB_LINK

 

- DB LINK 삭제

SQL> DROP DATABASE LINK DB_LINK명

- 한글을 체크하는 함수

var koreanCharCheck = function(inputStr) {

for( var i = 0; inputStr.length; i++ ) {

var checkChar = inputStr.charCodeAt(i);

// 한글체크부분 하위 if 문에서 true 이면 한글이 포함되어 있는것이다.

if( (0xAC00 <= checkChar && checkChar <= 0xD7A3) || (0x3131 <= checkChar && checkChar <= 0x318E) ) {

alert('한글은 입력하실수 없습니다.');

return false;

}

}

}

 

- 한글입력을 막는 임의의 스크립트

- JQuery Form 에서의 입력값을 검증하다가 Type 이 'undefined' 이면 당황한다...

  DatePicker 의 입력값을 확인하려고

  $('#DatePickerVal').val() 해서 Null 체크하니 'undefined' 가 뜬다.. 비교를 못한다. Null 확인도 못한다. 당황했다.

 

if( jQuery.type(입력값) === 'undefined' ) {

alert('값을 입력하세요.');

return false;

}

모 이런식으로 대처하면 된다.

jQuery( document ).ready( function(){

        var head = document.getElementsByTagName('head')[0];

        var nProtect = document.createElement('script');

        nProtect.type = 'text/javascript';

        nProtect.async = true;

        nProtect.src = 'https://supdate.nprotect.net/nprotect2007/keycrypt/arisu/npkfx.js';

        head.appendChild(nProtect);

});


실제 개발에 반영한 소스를 그대로 옮긴것. 참고해서 사용하면 될 듯

.ready() 되면 무조건 실행이 되고 있고, 상황 별로 하라면 .ready() 안에 있는 스크립트 내용을 function() 으로 만들고

.ready() 에서 분기별로 호출하는 식으로 변경하면 된다.


위에서는 nProtect.src 에서 호출한 .js 가 자동으로 브라우져체크해서 실행여부를 판단하므로, 나는 그냥 호출만 했다..

저건 키보드보안 모듈 설치하는거..;

 


- 자바스크립트 부분


        /* 숫자입력단위 콤마(",") & 입력값 숫자체크 */

    var SetComma = function(str) {

        var regMustNumberComma = /^[0-9|,]+$/;

        var regMustNoStartZero = /^[0]/;

        

        str = str.replace(/,/g,'');

        var retValue = "";

            for( i = 1; i <= str.length; i++ ) {

                if( i > 1 && (i%3) == 1 )

                    retValue = str.charAt(str.length - i) + "," + retValue;

                else

                    retValue = str.charAt(str.length - i) + retValue;

            }

            if( regMustNoStartZero.test(retValue) == true && window.event.keyCode != 9 ) {

                alert("입력숫자는 '0'으로 시작할 수 없습니다.");

                return "";

            }

            if( regMustNumberComma.test(retValue) == false ) {

                alert("숫자만 입력하실 수 있습니다.");

                return "";

            }

            return retValue;

    };



- 입력 폼

<input type="text" class="text" name="remvlPointer" size="20" onkeyup="this.value=SetComma(this.value)" value="${dataBean.remvlPointer}"/>



- 주의사항

입력폼에 사용자가 숫자를 입력할때 동적으로 천단위로 콤마를 찍어주고 DB에 INSERT 할때에는 콤마를 제거해주는 작업을 해주고 INSERT 해야한다. 까먹지마...

- 콤마제거하는 JAVA 단 메서드(Null 체크하는 Validator.isEmpty() 는 회사프레임워크 메서드다. )


    public static String getPureNumber(String inquireParam) {


        String returnStr = "";


        if( Validator.isEmpty(inquireParam) ) {

            returnStr = String.valueOf(StringUtil.ZERO);

        }

        else{

            inquireParam = inquireParam.replaceAll(",", "");

            returnStr = inquireParam;

        }

        return returnStr;

    }

- 디비에서 SELECT 해서 화면에 뿌려줄때는 또 콤마를 찍어야 되겟지?

    public static String getDecimalFormat(long inquireParam) {

        String returnStr = "";


        DecimalFormat format = new DecimalFormat("#,##0");

        returnStr = format.format(inquireParam);


        return returnStr;

    }

+ Recent posts