정규 표현식의 개념
2023. 1. 19. 11:54ㆍ카테고리 없음
정규 표현식(regular expression)이란?
문자열에서 특정한 규칙을 가지는 문자열의 집합을 찾아내기 위한 검색 패턴
이러한 검색 패턴은 모든 종류의 문자열 검색이나 교체 등의 작업에서 사용할 수 있음
정규 표현식의 생성
1. 정규 표현식 리터럴을 이용한 생성
2. RegExp 객체를 이용한 생성
문법
/검색패턴/플래그
정규 표현식 리터럴은 슬래시(/) 기호로 시작하여, 슬래시(/) 기호로 끝남
또한, 필요에 따라 플래그를 추가하여 기본 검색 설정을 변경할 수도 있음
예제
var regStr = /a+bc/; // 정규 표현식 리터럴을 이용한 생성
var regObj = new RegExp("a+bc"); // RegExp 객체를 이용한 생성
regStr; // /a+bc/
regObj; // /a+bc/
단순한 패턴 검색
정규 표현식을 사용하여 단순한 패턴을 검색하고자 할 때는 찾고자 하는 문자열을 직접 나열하면 됨
예제
"abc"라는 문자열만이 일치
/abc/
정규 표현식을 이용한 단순한 패턴 검색 (첫번째로 나타난 곳을 출력)
var targetStr = "간장 공장 공장장은 강 공장장이고, 된장 공장 공장장은 장 공장장이다."
var strReg1 = /공장/;
var strReg2 = /장공/;
targetStr.search(strReg1); // 3
targetStr.search(strReg2); // -1
위의 예제에서 첫 번째 정규 표현식은 해당 문자열의 부분 문자열인 "공장"과 총 6번 일치
하지만 search() 메소드는 일치하는 문자열 중에서 첫 번째 문자열의 인덱스만을 반환
위의 예제에서 두 번째 정규 표현식은 해당 문자열이 "장 공"이라는 부분 문자열은 포함하고 있지만, 정확히 "장공"이라는 부분 문자열을 포함하지 않으므로, 아무것도 일치하지 않음
search() 메소드는 해당 문자열에서 인수로 전달받은 정규 표현식과 일치하는 부분 문자열을 찾지 못하면 -1을 반환
search() 메소드 - 해당 문자열에서 인수로 전달받은 정규 표현식과 일치하는 첫 번째 문자열의 위치를 반환해주는 자바스크립트의 String 메소드
플래그(flags)
정규 표현식을 생성할 때 플래그를 사용하여 기본 검색 설정을 변경할 수 있음
이렇게 설정된 플래그는 나중에 추가되거나 삭제될 수 없음
플래그(flag) | 설명 |
i | 검색 패턴을 비교할 때 대소문자를 구분하지 않도록 설정함. |
g | 검색 패턴을 비교할 때 일치하는 모든 부분을 선택하도록 설정함. |
m | 검색 패턴을 비교할 때 여러 줄의 입력 문자열을 그 상태 그대로 여러 줄로 비교하도록 설정함. |
y | 대상 문자열의 현재 위치부터 비교를 시작하도록 설정함. |
예제
var targetStr = "bcabcAB";
var strReg = /AB/; // 검색 패턴 비교 시 기본 설정으로 대소문자를 구분함.
var strUsingFlag = /AB/i; // new RegExp("AB", "i")와 동일함.
targetStr.search(strReg); // 5
targetStr.search(strUsingFlag); // 2 -> 대소문자를 구분하지 않고 검색함.
참고