728x90

Regular Expressions in Java


java.util.regex package 에 있는 Matcher 클래스와 Pattern 클래스를 사용하여 문자열을 정규표현식으로 검증할수 있다.

     

http://www.javamex.com/tutorials/regular_expressions/pattern_matcher.shtml#.UfdJmo1M-X8


e.g. )  boolean b = Pattern.matches(“^[a-zA-Z0-9]*$”, this.input);

 

A.     정규표현식 설명


^ : 문자열의 시작을 나타냄. 

$ : 문자열의 종료를 나타냄. 

. : 임의의 한 문자를 나타냄. (문자의 종류는 가리지 않는다)

| : or를 나타냄. 

? : 앞 문자가 없거나 하나있음을 나타냄. 

+ : 앞 문자가 하나 이상임을 나타냄. 

* : 앞 문자가 없을 수도 무한정 많을 수도 있음을 나타냄. 

[] : 문자 클래스를 지정할 때 사용한다. 문자의 집합이나 범위를 나타내며 두 문자 사이는 '-' 기호로 범위를 나타낸다. []내에서 ^ 가 선행하여 나타나면 not 를 나타낸다. 

{} : 선행문자가 나타나는 횟수 또는 범위를 나타낸다. 

a{3} 인 경우 a가 3번 반복된 경우를 말하며, a{3,}이면 a가 3번 이상 반복인 경우를 말한다. 또한 a{3,5}인 경우 

a가 3번 이상 5번 이하 반복된 경우를 나타낸다. 

( ): 소괄호 ‘( )’ 특수문자는 ‘( )’ 특수문자 안의 글자들을 하나의 문자로 봅니다. 예를 들어 ‘gu(gg){2}le’ 와 같은 패턴을 작성하게 되면 ‘guggggle' 문자열이 문자열에 포함되어 있어야 됩니다.

|: 패턴 안에서 OR연산을 사용할 때 사용합니다. 예를 들어 'hi|hello' 는 hi 나 hello 가 포함되어있는 문자열을 의미합니다.

\w : 알파벳이나 숫자

\W : 알파벳이나 숫자를 제외한 문자

\d : 숫자 [0-9]와 동일

\D : 숫자를 제외한 모든 문자

\: 위의 각 기능에서 벗어납니다(escape).

(?i): 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않는다 (물음표+소문자i(아이))


B.     기본적인 문자열 검증 정규식


^[0-9]*$  :  숫자만

^[a-zA-Z]*$  :  영문자만

^[가-힣]*$  :  한글만

^[a-zA-Z0-9]*$  :  영어/숫자만

.+ : 한문자 이상의 전체문자를 표시한다.

C. 정규식 표현 예제


이메일 : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$  or  ^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$ 

휴대폰 :  ^01(?:01[6-9]) - (?:\d{3}\d{4}) - \d{4}$ 

일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$

주민등록번호 : \d{6} \- [1-4]\d{6}

IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})

파일확장자: ([^\s]+(\.(?i)(jpg|png|gif|bmp))$)



1. 자바스크립트 정규표현식은 RegExp 객체로 표현됨.

2. RegExp 객체 생성방법

    1) RegExp() 생성자 사용

    2) 한쌍의 슬래시(/) 안에 리터럴을 기술

           --> var pattern = /s$/;        

           --> var pattern = new RegExp("s$");

                              : 's' 로 끝나는 문자열에 매칭됨


3. 정규표현식 리터럴 문자

    1) \0 : 널문자

    2) \t  : 탭

    3) \n : 줄바꿈

    4) \v : 수직탭

    5) \f  : 폼피드

    6) \r  : 캐리지리턴


4. 문자클래스 ( 대괄호로 둘러싼 개별 리터럴 문자 --> 대괄호내에 정의된 모든 문자에 매치됨)

    1) /[abc]/   : a,b,c 모두 매칭

    2) /[^abc]/  : a,,b,c 가 아닌 모든 문자에 매치

    3) /[a-z]/    : 임의의 알파벳 소문자에 매치

    4) /[a-zA-Z0-9]/   : 임의의 알파벳 대소문자 및 숫자에 매치

    5) 특수문자

          a) \s : Unicode 공백문자

          b) \S : Unicode 공백문자가 아닌 문자

          c) \w : ASCII 문자([a-zA-Z0-9]) 와 동일

          d) \W : ASCII 문자가 아닌 문자 ([^a-zA-Z0-9]) 와 동일

          e) \d  : ASCII 숫자([0-9]) 와 동일

          f) \D : ASCII 숫자가 아닌 문자([^0-9]) 와 동일

          g) \b : 백스페이스


               ==> /[\b]/    백스페이스에 매치됨.


               ==> /[\s\d]/  공백문자나 숫자 하나에 매치


5. 정규표현식 반복 문자 

      1) {n,m} n번이상 m번 보다 이하

      2) {n,}   n번이상

      3) {n}    딱 n번

      4) ?        0또는 한번 나타남  ({0,1}과 동일)          

      5) +        한번이상      ({1,}과 동일)

      6) *        0번이상       ({0,} 과 동일)


           ==> /\d{2,4}/    : 2에서 4자리 사이의 숫자와 매치


           ==> /\w{3}\d?/    : 정확히 3 문자와 매치 돠고 생략 가능한 숫자가 하나 있다.


           ==> /\s+java\s+/  : 앞뒤에 하나 이상의 공백이 있는 java 와 매치


           ==> /[^"]*/            : 0개 이상의 따옴표가 아닌 문자와 매치


6. 대체표현식 (|문자)  ==>  왼쪽에서 오른쪽으로 검색됨 (먼저 매치되면 뒤의 것은 매칭 안됨)

                    /ab|cd|ef/          : ab 문자열 또는 cd문자열 또는 ef문자열 매치

                    /d{3}|[a-z]{4}/  : 세자리 숫자나 네개의 소문자에 매치 

                    /a|ab/                : "ab" 에 적용되면 첫번째 표현식에만 매칭됨.


7. 그룹화 (소괄호)  : 

# 정규표현식 플래그

   i    : 대소문자 구별하지 않음

   g   : 전역매칭 수행 , 첫번째 매치에서 끝내지 않고 매치되는 모든 것을 찾는다.

   m  : 여러줄 상태


# 정규표현식 패턴 매칭을 위한 String 메서드

(1) search()  : - 정규표현식을 파라미터로 받아 가장 처음 매칭되는 부분 문자열의 위치를 리턴, 

                    - 파라미터가 정규표현식이 아니라면 RegExp()생성자로 정규표현식으로 변환된다. 

                     - 매칭되는 부분 문자열이 없다면 -1 리턴 

                     - 전역기능 지원안함. g플래그가 있다면 무시 


               "javaScript".search(/script/i);               ==>  4리턴


(2) replace() : - 찾아서 바꾸기 작업 수행

                      - 첫번째 파라미터 : 정규표현식 , 두번째 파라미터 :바꿀 문자열(두번째파라미터 함수가능,동적문자열가능)

                      - g플래그가 있으면 모두다 바꾸고, 없으면 첫번째 매치만 바꿈

                      - 첫번째 파라미터가 정규표현식이 아니면 주어진 문자열을 그대로 검색한다.

                      - 

                 text.replace(/javascript/gi,"JavaScript");           ==> 문자열의 대문자가 어떤상태던지 JavaScript로 변환한다.


(3) match()

728x90

'프로그래밍 > 자바스크립트' 카테고리의 다른 글

jQuery 자식 팝업 창에서 부모 창 컨트롤  (0) 2016.03.17
jquery radio, select, checkbox  (0) 2013.10.28
quick menu 바  (0) 2013.07.19
javascript 브라우저 종류  (0) 2012.11.23
자주 쓰이는 JQuery Ajax 예제  (0) 2011.08.02

+ Recent posts