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()
'프로그래밍 > 자바스크립트' 카테고리의 다른 글
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 |