티스토리 뷰
728x90
반응형
- 정규 표현식 문자열에서 특정 문자를 찾아내는 도구
- 하나의 언어이다. (다양한 언어에서도 활용함)
- 문자열을 검색하고 대체하는 데 사용하는 형식 언어패턴
▶ 정규 표현식 문법
1. 그룹과 범위
표현식 | 설명 |
| |
또는 |
() | 한 그룹 |
[] | 문자셋(숫자, 문자, 기호, 공백 다 가능) |
[^] | 부정 문자셋(괄호 안의 문자가 아닐 때) |
2. 빈도수
표현식 | 설명 |
? | 0 또는 1 (있거나 없거나) |
* | 0 또는 1이상(있어도 되고 없어도 되고) |
+ | 1 이상(하나 있거나 그 이상 있거나) |
{n} | n번 반복 |
{min, } | 최솟값 이상 ex) {2, } => 숫자나 문자 2개 이상 |
{min,max} | 최솟값 이상, 최댓값 이하 |
3. 문자
표현식 | 설명 |
. | 어떤 글자(줄 바꿈 제외) |
\d | 숫자 |
\D | 숫자 아님 |
\w | 문자 |
\W | 문자 아님 |
\s | 공백 |
\S | 공백 아님 |
4. 경계 영역
표현식 | 설명 |
\b | 단어 경계 |
\B | 단어 경계가 아님 |
^ | 문장의 시작 |
$ | 문장의 끝 |
⭐ 자주 쓰이는 정규 표현식 ⭐
- 숫자만 : ^[0-9]$
- 영문자만 : ^[a-zA-Z]$
- 한글만 : ^[가-힣]$
- 영어 & 숫자만 : ^[a-zA-Z0-9]$
- E-Mail : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$
- 휴대폰 : ^01(?:0|1|[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})
↓정규 표현식 학습 및 테스트 하기 위한 사이트 ↓
RegExr: Learn, Build, & Test RegEx
RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).
regexr.com
▶ 정규 표현식 객체 생성하기
1. 생성자 함수 방식
const pattern = new RegExp("문자열");
2. 리터럴 방식
const pattern = /문자열/gm;
▶ 정규 표현식 객체나 문자열이 사용하는 메소드
- 추출 (해당 패턴의 문자열만 추출)
- 테스트 (해당 패턴이 있는지 확인)
- 변환 (해당 패턴의 문자열을 다른 문자열로 변환)
1) exec() : 패턴에 해당되는 문자열이 있으면 그 값을 배열로 반환
// 구문
정규식.exec("문자열");
// 예제
let pattern = /a/;
pattern.exec("abcdef");
2) test() : 패턴에 해당되는 문자열이 있으면 true를, 없으면 false를 반환
// 구문
정규식.test("문자열");
// 예제
let pattern = /a/;
pattern.test("abcdef");
3) metch() : exec()와 비슷함, 정규식에 해당하는 문자열을 배열로 반환
// 구문
문자열.metch(정규식);
// 예제
let pattern = /a/;
"abcdef".match(pattern);
4) search() : 정규식에 해당하는 문자열이 있으면 index를, 없으면 -1을 반환
// 구문
문자열.search(정규식);;
// 예제
let pattern = /a/;
"abcdef".search(정규식);
5) replace() : 문자열에서 패턴에 해당하는 문자를 대체 문자로 변경해서 반환
// 구문
문자열.replace(정규식, "대체문자");
// 예제
let pattern = /a/;
"abcdef".replace(pattern, "A");
6) split() : 여러가지 조건으로 문자열을 구분자 기준으로 쪼개어 배열로 반환
// 구문
문자열.split(정규식);
// 예제
let str = "Hello world,Man";
let pattern = / ,/;
str.split(pattern);
728x90