본문 바로가기
Programming Language/Javascript

[Javascript] 한국어 정규식 동 이름 추출

by 뒹굴거리는프로도 2018. 1. 25.
반응형

 


 

사람들이 입력창에 집 주소를 입력할 때, '몇 동 몇 호' 이렇게 입력하기도 하고 '300동 300호' 이렇게 입력하기도 한다.

몇 가지 규칙을 정한 후, 사람들이 집 주소란에 입력한 텍스트에서 동 이름만 추출하고 싶을 때 아래 정규식 코드를 활용했다.

function addrSubstrDongHo(addrStr){
        var str = addrStr;
        /*  var chk_dh = /\w*동\s\w*호/;     
            var chk_dh1 = /\w*동\w*호/;
            var chk_dh2 = /,\s(\w*)-(\w*)/;
        */    
        var chk_dh = /[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3]*\w*동\s\w*호/;        
        var chk_dh1 = /[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3]*\w*동\w*호/;
        var chk_dh2 = /,\s([\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3]*\w*)-(\w*)/;
        
        
        var chk_h = /\w*호/;
        var result = null;
        if( chk_dh.test( str ) )
        {
            result = chk_dh.exec( str )[0];
            result = result.replace( /^동 호$/, "" );
        }
        else if( chk_dh1.test( str ) )
        {
            result = chk_dh1.exec( str )[0];
            result = result.replace( /^동 호$/, "" );
        }
        else if( chk_dh2.test( str ) )
        {
            result = chk_dh2.exec( str )[0];
            result = result.replace(", ", "");
            result = result.replace( "-", "동 " ) + "호";
        }
                
        else if( chk_h.test( str ) )
        {
            result = chk_h.exec( str )[0];
            result = result.replace( /^호$/, "" );
        }
        window.console.log( result );
        return result;
    }
 

 

/**
     * 주소중 동수
     * @function
     * @param dongho
     * @returns String
     */
    function getDongNm(dongho){
        /* var chk_d = /\w*동/; */
        var chk_d = /[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3]*\w*동 /;
        
        if( chk_d.test( dongho ) )
        {
            var dongStr = chk_d.exec(dongho)[0];
            /*test  */            
            var extDong = dongStr.lastIndexOf("동");
            var dongName = dongStr.substring(0, extDong);
            
            /* return dongStr.substring(0, dongStr.length-1); */
            return dongName;
        }else{
            return "";
        }
    }

 

 

 

반응형