ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정규식
    JavaScript/JavaScript 2018. 2. 4. 16:35

    1. 만들기


    1)

    1
    var re=/패턴/플래그;
    cs



    2)

    1
    var re=new RegExp("패턴","플래그");
    cs



    3)차이 - new로 만들때에는 이스케이프문자는 \는 \\로 해주어야 한다.

    1
    2
    var re=/\w/;
    var re=new RegExp("\\w");
    cs




    2. 플래그(flag)


    g (Global 찾기) - 패턴에 맞는 모든문자 찾기

    i (Ignore Case) - 대소문자 무시

    m (Multiline) - 여러줄



    3. 

    ^ - 문자열의 시작을 의미 ,m 플래그를 사용할경우 경우는 각 문자열의 시작

    $ - 문자열의 끝을 의미 ,m 플래그를 사용할경우 경우는 각 문자열의 끝

    . - 모든 한문자



    4.

    [문자들] - 괄호안의 문자 하나와 매치 

    예) [abc] - 는 a나 b나 c중 하나를 의미 


    [^문자들] - 괄호안의 문자가 아닌문자와 매치 

    예) [^abc] - 는 1,2.... d,e.... 등과 매치


    [문자1-문자2] - 문자1과 문자2와 그 사이의 값과 매치

    예) [a-d] - a,b,c,d와 매치     




    5. (abc) - abc와 매치




    6. | - 좌우 패턴중 하나를 의미

    예) (abc|def) - abc나 def를 의미




    7. 

    * - 앞의 패턴이 0회 또는 그 이상반복됨

    + - 앞의 패턴이 1회 또는 그 이상반복됨

    ? - 앞의 패턴이 0또는 1회 반복




    8. {n}, {n,}, {n,m} - 패턴의 반복회수

    예) 

    (abc){1,3} - abc가 1에서 3회 반복

    (abc){1} - abc가 1회반복

    (abc){,10} - abc가 10회 이하 반복




    9. 특수문자 (Escapes Character)

    \ - 일반문자에 \을 붙여서 특수한 용도로 사용한다.

    \f - 폼피드(?)

    \r - 캐리지리턴

    \n - 새줄

    \t - 일반 탭문자

    \v - 세로 탭문자(?)

    \0 - NULL 널문자

    [\b] - 백스페이스

    \s - 공백문자 ( \f, \n, \r, \t, \v, \u00A0, \u2028, \u2029 )

    \S - 공백이아닌문자

    \w - 알파벳문자,숫자,_ [a-zA-Z0-9_]

    \W - 알파벳문자,숫자,_가 아닌문자 [^a-zA-Z0-9_]).

    \d - 정수(short for [0-9]).

    \D - 정수가 아닌 문자 (short for [^0-9]).

    \b - 단어의 경계 공백,새줄.

    \B - 경계가 아닌문자.

    \cX - 컨트롤+문자 E.g: \cm matches control-M.

    \xhh - 핵사코드

    \uhhhh - 유니코드




    복잡한 사용방법이 있고 여러 특수문자와의 조합으로 배우기가 쉽지 않아 간단한 예제를 통해 설명한다.


    1. 각 문자와 숫자는 해당 문자 또는 문자열이 테스트할 문자열에 있을경우 true 가된다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
        // 'a' 가 있는 문자열 모두가 TRUE (대소문자 구분)
        var filter = /a/
        if (filter.test("some test words"== true)
        { 
            alert("ok"); 
        } 
        else 
        { 
            alert("fail"); 
        } 
    </script>
    cs




    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
        // "about" 가 있는 문자열 모두가 TRUE (대소문자 구분)
        var filter = /about/
        if (filter.test("some test words"== true
        { 
            alert("ok"); 
        } 
        else 
        { 
            alert("fail"); 
        }
    </script>
    cs





    2. 대소문자 구분없이 해당 문자 또는 문자열을 검색할 경우 끝에 i 를 붙인다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
        // 'a' 또는 'A' 가 있는 문자열 모두가 TRUE (대소문자 구분 안함)
        var filter = /a/i
        if (filter.test("some test words"== true
        { 
            alert("ok"); 
        } 
        else 
        { 
            alert("fail"); 
        }
    </script>
    cs





    3. 여러개의 이어지는 내용들을 검색할 경우는 '-' 를 넣어 표현한다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
        // 'a' 에서 'z' 까지중 하나만 있으면 모두가 TRUE (대소문자 구분)
        var filter = /[a-z]/
        if (filter.test("some test words"== true
        { 
            alert("ok"); 
        } 
        else 
        { 
            alert("fail"); 
        }
    </script>
    cs





    4. 여러가지의 문자 또는 문자열을 검색할 경우 '|' 를 넣는다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
        // 'a' 또는 'b' 또는 'c' 가 있는 문자열 모두가 TRUE (대소문자 구분)
        var filter = /a|b|c/
        if (filter.test("some test words"== true
        { 
            alert("ok"); 
        } 
        else 
        { 
            alert("fail"); 
        }
    </script>
    cs




    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
        // 'a' 에서 'z' 까지 또는 '0' 에서 '9' 까지중 하나만 있으면 모두가 TRUE (대소문자 구분)
        var filter = /[a-z]|[0-9]/
        if (filter.test("some test words"== true
        { 
            alert("ok"); 
        } 
        else 
        { 
            alert("fail"); 
        }
    </script>
    cs





    5. 해당 문자또는 문자열이 없는 경우를 검색할 경우 브래킷('[', ']') 안에 '^' 를 넣는다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
        // 'a' 에서 'z' 까지의 문자가 아닌 문자가 있을 경우 TRUE (대소문자 구분)
        var filter = /[^a-z]/
        if (filter.test("some test words"== true
        { 
            alert("ok"); 
        } 
        else 
        { 
            alert("fail"); 
        }
    </script>
    cs






    6. 문자열의 첫번째 글자가 일치해야할 경우는 '^' 를 브래킷('[', ']') 밖에 넣는다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
        // 'a' 에서 'z' 까지의 문자로 시작하는 문자열일 겨우 TRUE (대소문자 구분)
        var filter = /^[a-z]/
        if (filter.test("some test words"== true
        { 
            alert("ok"); 
        } 
        else 
        { 
            alert("fail"); 
        }
    </script>
    cs






    7. 문자열의 끝쪽 글자가 해당 문자 또는 문자열과 일치해야할 경우는 '$' 를 넣는다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
        // 'a' 에서 'z' 까지의 문자로 끝나는 문자열일 겨우 TRUE (대소문자 구분)
        var filter = /[a-z]$/
        if (filter.test("some test words"== true
        { 
            alert("ok"); 
        } 
        else 
        { 
            alert("fail"); 
        }
    </script>
    cs






    8. 특수문자('\', '^', '$', '*', '+', '?', '.', '(', ')', '|', '{', '}', '[', ']')를 검색할 경우는 '\' 를 넣는다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script>
        // '\' 가 있는 문자열일 겨우 TRUE (대소문자 구분)
        var filter = /\\/
        if (filter.test("some test words"== true
        { 
            alert("ok"); 
        } 
        else 
        { 
            alert("fail"); 
        }
    </script>
    cs






    출처: http://iamnotokay.tistory.com/26





Designed by Tistory.