본문 바로가기
Developer/Javascript & jQuery

[Javascript] 정규식패턴

by 순수한소년 2023. 11. 24.
728x90
반응형

 

자바스크립트는 RexEx 정규식을 사용해서 불필요한 문자를 제거할 수 있습니다
정규식은 /[정규식으로 제거할 패턴]/gim 방식으로 선언합니다
gim (replaceAll) : 전역적으로 문자열에 포함된 같은 패턴의 문자를 모두 제거하기 위해서 사용합니다
replace 를 사용해서 특정 패턴 문자 인 경우 해당 문자를 삭제합니다

 

정규식 패턴

  • [a-z] : 영어 소문자 지정
  • [A-Z] : 영어 대문자 지정
  • [ㄱ-ㅎㅏ-ㅣ가-힣] : 한글 지정
  • [.,!?] : 허용하고자하는 특수문자 지정

#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 숫자, 공백 제거
let reg = /[0-9 ]/gim;

// 숫자, 공백 허용
let reg = /[^0-9]/gi;

// 영어(소문자, 대문자), 공백 모두 제거
let reg = /[a-zA-Z ]/gim;
 
// 특수문자, 괄호, 점, 공백 모두 제거
let reg = /[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/ ]/gim;
 
// 특수문자, 괄호, 점 모두 제거 - 공백은 제거 안함
let reg = /[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gim;
 
//특수문자, 괄호, 공백 모두 제거 - 점은 제거 안함
let reg = /[`~!@#$%^&*()_|+\-=?;:'"<>\{\}\[\]\\\/ ]/gim;
 
//정규식에 해당하는 문자를 replace 로 제거
let resultData = originalData.replace(reg, "");
 
cs

#

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
function setSysEvent(){
        <%-- 숫자만 입력 처리--%>
        $('.onlyNumber').on('keydown'function(e) {
              e = e || window.event;
            var keyID = (e.which) ? e.which : e.keyCode;
            if((keyID == 8 || keyID == 9 || keyID == 188|| ( keyID >=37 && keyID <= 40 ) || ( keyID >=48 && keyID <= 57 ) || ( keyID >=96 && keyID <= 105 ) ){
                return true;
            }else{
                return false;
            }
        });
        <%-- 콤마를 포함한 숫자만 입력(자동 콤마) 처리--%>
        $(".commaNumber").on('keyup'function(e) {
            $(this).val($(this).val().replace(',',''));
            $(this).val($(this).val().replace(/\B(?=(\d{3})+(?!\d))/g, ","));
        });
        $(".commaNumber").on('keydown'function(e) {
              e = e || window.event;
            var keyID = (e.which) ? e.which : e.keyCode;
            if((keyID == 8 || keyID == 9 || keyID == 188|| ( keyID >=37 && keyID <= 40 ) || ( keyID >=48 && keyID <= 57 ) || ( keyID >=96 && keyID <= 105 ) ){
                return true;
            }else{
                return false;
            }
        });
        <%-- 점을 포함한 숫자만 입력 처리--%>
        $(".periodNumber").on('keyup'function(e) {
            var num_arr = [
                97989910010110210310410596,
                48495051525354555657
            ]
            var key_code = ( e.which ) ? e.which : e.keyCode;
            if( num_arr.indexOfNumber( key_code ) ) != -1 ){
                var len = $(this).val().length;
                if( len == 4 ) $(this).val($(this).val() + ".");
                if( len == 7 ) $(this).val($(this).val() + ".");
            }
        });
        $(".periodNumber").on('keydown'function(e) {
              e = e || window.event;
            var keyID = (e.which) ? e.which : e.keyCode;
            if((keyID == 8 || keyID == 9 || keyID == 110 || keyID == 190|| ( keyID >=37 && keyID <= 40 ) || ( keyID >=48 && keyID <= 57 ) || ( keyID >=96 && keyID <= 105 ) ){
                return true;
            }else{
                return false;
            }
        });
    }
cs

 

@

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
32
33
34
35
36
37
38
39
40
41
        // 체크숫자,한글
        var chkNumberHan =/[~!@\#$%^&*\()\-=+_'\;<>\/.\`:\"\\,\[\]?|{}ㄱ-ㅎㅏ-ㅣ가-힣]/gi;
        // 숫자공백삭제
        var chkNumberNo  =/[0-9]/gi;
        // 숫자허용
        var chkNumberYes =/[^0-9]/gi;
        // 특수문자, 괄호, 점, 공백 모두 제거
        var chkSpecial   =/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/ ]/gim;
var email_rule   =/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;

        $(document)
        .on("keydown", ".onlyNumber", function(e) {
            var rpStep0 =$(this).val();
            var rpStep1 =rpStep0.replace(chkNumberYes, "");
            $(this).val(rpStep1);
        })
        .on("keyup", ".onlyNumber", function(e) {
            var rpStep0 =$(this).val();
            var rpStep1 =rpStep0.replace(chkNumberYes, "");
            var rpStep2 =rpStep1.replace(chkSpecial, "");
            $(this).val(rpStep2);
        })
        .on("keydown", ".noNumber", function(e) {
            var temp =$(this).val();
            if(temp.indexOf(chkNumberNo)){
                temp =temp.replace(chkNumberNo,"");
            }
            if(temp.indexOf(chkSpecial)){
                temp =temp.replace(chkSpecial,"");
            }
            $(this).val(temp);
        })
        .on("keyup", ".noNumber", function(e) {
            var temp =$(this).val();
            if(temp.indexOf(chkNumberNo)){
                temp =temp.replace(chkNumberNo,"");
            }
            if(temp.indexOf(chkSpecial)){
                temp =temp.replace(chkSpecial,"");
            }
            $(this).val(temp);
        })

cs

 

@

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<c:set var="lStudentEmail0" value="${fn:split(result.lStudentEmail,'@')[0]}" />
<c:set var="lStudentEmail1" value="${fn:split(result.lStudentEmail,'@')[1]}" />
 
<input type="text" id="email_id" name="lStudentEmail0" value="${lStudentEmail0}" title="이메일 아이디" placeholder="이메일" maxlength="25" style="width:36%" />
<span class="v_middle">@</span>
<input type="text" id="email_domain" name="lStudentEmail1" value="${lStudentEmail1}" title="도메인" placeholder="도메인" maxlength="18" style="width:30%" />
 
<select name="bbsEmail3" onChange="fn_setEmailDomain(this.value); return false;" style="cursor:pointer; font-size: 16px; border:1px solid #e9e9e9; height:30px; border-radius:4px; width:28%;">
    <option value="naver.com"   <c:if test="${'naver.com'   eq longStudentEmail1 || empty longStudentEmail1}">selected</c:if> >naver.com</option>
    <option value="gmail.com"   <c:if test="${'gmail.com'   eq longStudentEmail1}">selected</c:if> >gmail.com</option>
    <option value="hanmail.net" <c:if test="${'hanmail.net' eq longStudentEmail1}">selected</c:if> >hanmail.net</option>
    <option value="hotmail.com" <c:if test="${'hotmail.com' eq longStudentEmail1}">selected</c:if> >hotmail.com</option>
    <option value="korea.com"   <c:if test="${'korea.com'   eq longStudentEmail1}">selected</c:if> >korea.com</option>
    <option value="nate.com"    <c:if test="${'nate.com'    eq longStudentEmail1}">selected</c:if> >nate.com</option>
    <option value="yahoo.com"   <c:if test="${'yahoo.com'   eq longStudentEmail1}">selected</c:if> >yahoo.com</option>
    <option value="">직접입력</option>
</select>
cs

@

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function fn_chkEmail(){
        var email_rule   =/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
        var email_id     =$("#email_id").val();
        var email_domain =$("#email_domain").val();
        var mail ="";
 
        if(!email_id){
          alert("이메일을 입력해주세요");
          $("#email_id").focus();
          return false;
        }
        if(!email_domain){
          alert("도메인을 입력해주세요");
          $("#email_domain").focus();
          return false;
        }
        mail = email_id+"@"+email_domain;
        $("#hdLongStudentEmail").val(mail);
 
        if(!email_rule.test(mail)){
            alert("이메일을 형식에 맞게 입력해주세요.");
          return false;
        }
    }
cs

 

@

반응형