Dev/Regexp

regexp를 이용한 format

pu3vig 2022. 5. 13. 13:55
728x90
  • target:  regexp를 이용하여 특정 포맷으로 적용

 


  • method: 
function dataFormat(type, value, masking) {
	var f_value;
    var format;
    // 숫자만 적용
    value = value.replace(/[^0-9]/g, '');
    
	switch(type) {
    	case 'card':
        	/* 카드번호 format(XXXX-XXXX-XXXX-XXXX) */
			/* masking 적용시, '$1-****-****-$4'을 masking 인자로 전달 */
            
        	format = masking || '$1-$2-$3-$4';
            f_value = value.replace(/(\d{4})(\d{4})(\d{4})(\d{4})/, format);
            break;
        case 'bizNo':
        	/* 사업자번호 format(XXX-XX-XXXXX)*/
            
            format = masking || '$1-$2-$3';
            f_value = value.replace(/(\d{3})(\d{2})(\d{5})/, format);
            break;
        case 'tel':
        	/* 전화번호는 일반/휴대폰 포함 형식이 다양해서 데이터에 따라 추가 및 수정 필요 */
            
            if(value.length == 8) {	// xxxx-xxxx
            	format = masking || '$1-$2';
            	f_value = vlaue.replace(/(\d{4})(\d{4})/, format);
            }
            else {	// xx-xxx-xxxx, xx-xxxx-xxxx, xxx-xxx-xxxx, xxx-xxxx-xxxx
            	format = masking || '$1-$2-$3';
                
                if(value.length == 11) {		
                    f_value = vlaue.replace(/(\d{3})(\d{4})(\d{4})/, format);
                }
                else if(value.indexOf('02')==0) {		// 지역번호 서울인 경우
                	if(value.length == 9)
                		f_value = vlaue.replace(/(\d{2})(\d{3})(\d{4})/, format);
                    else
                    	f_value = vlaue.replace(/(\d{2})(\d{4})(\d{4})/, format);
                }
                else {
                	f_value = vlaue.replace(/(\d{3})(\d{3})(\d{4})/, format);
                }
            }
        	break;
        default:
        	f_value = value;
    }
    return f_value;
}

 


  • desc: 숫자만으로 이루어진 데이터를 case에 따라 포맷 적용

  * 추가로 날짜(dayjs)나 금액 관련 세자리 콤마(numeral) 같은 포맷의 경우 library 사용

 


728x90

'Dev > Regexp' 카테고리의 다른 글

자주쓰는 정규식  (0) 2022.06.08