정규표현식 문법
정규 표현식 | 설명 |
^ | 문자열 시작 |
$ | 문자열 종료 |
. | 어떠한 한 문자 |
[ ] | - 대괄호 안에 문자 하나를 찾는다. - - 기호 사용하면 두 문자 사이의 범위에 존재하는 문자를 찾는다. - 대괄호 안에 ^ 사용하면 NOT으로 인식하여 반대되는 문자를 찾는다. EX) [a-zA-z0-9] |
( ) | - 괄호 안에 문자열을 찾는다. ==> ( | 사용하여 여러 개를 찾을 수 있음. ) EX) (apple | samsung | mincro) |
| | 패턴 안에서 or 연산을 수행한다. |
수량자(Quantifier) | |
* | 0 ~ 1 ~ 多 = 문자가 없을 수도 많을 수도 있다. |
+ | 1 ~ 多 = 문자가 하나 이상이 있다. |
? | 0 ~ 1 = 문자가 없거나 하나가 있다. |
{ } | 중괄호 안에는 값의 길이를 지정한다. EX) [a-z]{4} = 4글자 단위로 a~z 포함된 문자를 찾는다. |
탐욕적 수량자 | - 탐욕적 수량자는 예제와 같이 <div> 시작점 부터 마지막 </div>를 인식해서 찾는 방법이다. EX)<div>.+</div> <div>test</div><div>test2</div> |
게으른 수량자 | - 게으른 수량자는 예제와 같이 <div> = 시작되는 문자 </div> = 끝나는 문자의 영역으로 단위별로 나뉜다. (+? =+의 의미가 1 ~ 多 에서 1로 바뀜. ) EX)<div>.+?</div> <div>test</div><div>test2</div> |
Character Class | |
\w | - 알파벳이나 숫자를 찾는다. - 대문자 W 반대로 알파벳이나 숫자를 제외한 문자를 찾는다. |
\s | - 공백 문자를 찾는다. - 대문자 S 반대로 공백 문자를 제외한 문자를 찾는다. |
\d | - 숫자를 찾는다 = [0-9] 같다. - 대문자 D 숫자를 제외한 문자를 찾는다. |
\b | - 단어의 시작점을 찾는다 - 대문자 B 단어의 시작점이 아닌 문자를 찾는다. EX) \ba = apple air api EX) t\b = test token ert EX) \Ba = apple air apia |
\A | - 입력의 시작 부분 찾는다. - ^ 차이점 = ^a 라인별 시작점 a를 찾는다. \A 첫 라인의 시작점에서만 찾는다 EX) ^a apple air ajax EX)\Aa apple air ajax |
\Z | 입력의 끝 부분을 찾는다. - $ 차이점 = $a 라인별 끝점 a를 찾는다. \Z 마지막 라인 끝점에서만 찾는다. EX) a$ ha pa da EX) a\Z ha pa da |
(?=[문자]) | 문자를 검색할 때는 문자를 사용 하지만 선택 될 때는 문자를 제외한다. EX) AAA(?=X) AAAX---AAA |
(?![문자]) | 문자를 검색할 때 뒤에 문자가 포함되지 않은 문자를 찾는다. EX) AAA(?!X) AAAX---AAA |
자바는 \ 표현하려면 \\ 사용해야 합니다. | |
java String.replaceAll() | |
전화번호 | String str = "01012341234" str.replaceAll("(^[0-9]{2,3})([0-9]{3,4})([0-9]{4})$", "$1-$2-$3") console = 010-1234-1234 |
java String.matches | |
전화번호 패턴 검사 | String str = "01012341234" String str2 = "010-1234-1234" String pattern = "(^[0-9]{2,3})-([0-9]{3,4})-([0-9]{4})$"; str.matches(pattern); str2.matches(pattern); console = false <-- str true <-- str2 |
이메일 패턴 검사 | String str = "@gmail.com" String str2 = "test@gmail.com" String str3 = "test@gmail.co.kr" String str4 = "test@gmail.co.kr.a" String pattern = "^\\w+@\\w+\\.\\w+(\\.\\w+)?$" str.matches(pattern); str2.matches(pattern); str3.matches(pattern); str4.matches(pattern); console = false true true false |
문자열 바이트 길이 | var pattern = /[\u0000-\u007f]|([\u0080-\u07ff]|(.))/g; str.replace(pattern, '$&$1').length; |
정규식 기초 교육 사이트 : http://zvon.org/comp/r/tut-Regexp.html#Pages~Contents
정규식 테스트 사이트 : https://regex101.com/
replace(치환)
변수.replace(”찾을 문자열”, “변경할 문자열”);
- 문자열 변수의 특정 문자를 제거하거나 모든 공백을 없앨 때 사용.
- .replace()는 찾을 문자열 1개만 치환되기 때문에 자바의 .replaceAll()처럼 사용하기 위해서는 정규식을 사용.
옵션
g | 모든 패턴 체크(global) |
i | 대소문자 구별없이 체크 |
m | 여러 줄 체크 |
s | “dotAll”; 줄 바꿈과 일치 하는 . 을 허용 |
^ | 처음 |
$ | 끝 |
. | 한 문자 |
▶ 정규식을 활용한 특정 문자 제거
► 변수.replace(/찾을 문자열/gi, "변경할 문자열")
.replace(' ','') : 첫번째 공백 제거
.replace(/\-/g,'') : - 제거
.replace(/[-]/g,'')
.replace(/,/g,'') : , 제거
.replace(/^\s+/,'') : 앞의 공백 제거
.replace(/\s+$/,'') : 뒤의 공백 제거
.replace(/^\s+|\s+$/g,'') : 앞뒤 공백 제거
.replace(/\s/g,'') : 문자열 내의 모든 공백 제거
.replace(/\n/g,'') : 개행 제거
.replace(/\r/g,'') : 엔터 제거
'낙서장 > Java' 카테고리의 다른 글
vo, dto good (0) | 2022.12.21 |
---|---|
메소드 표기법때 참조 (0) | 2022.12.08 |
자바 비밀번호 숫자 문자 특수문자 정규식 유효성 검사 굳 (0) | 2022.11.10 |
Java 소수점 일정 자리 까지 출력 방법 (0) | 2022.08.05 |
페이징 전용 클래스 [PagingBean] (0) | 2021.08.19 |