문자열에서 특정 문자 조합을 찾기 위한 패턴이다. js에서는 정규 표현식도 객체로서, RegExp
의 exec()
와 test()
메서드를 사용할 수 있다. String
형태의 match()
, matchAll()
, replace()
, replaceAll()
, search()
, split()
메서드와 함께 사용할 수 있다.
const re = /ab+c/
정규 표현식 리터럴은 스크립트를 불러올 때 컴파일되므로, 바뀔 일이 없는 패턴의 경우 리터럴을 사용하면 성능이 향상될 수 있다.
const re = new RegExp('ab+c')
생성자 함수를 사용하면 정규 표현식이 런타임에 컴파일 된다. 바뀔 수 있는 패턴이나, 사용자 입력 등 외부 출처에서 가져오는 패턴의 경우 사용한다.
정규 표현식 패턴은 /abc/
처럼 단순한 문자로 구성하거나, /ab+c/
와 /Chapter (|d)|/|d*/
처럼 단순한 문자와 특수 문자의 조합으로 구성할 수도 있다. 특히 (|d+)
에 나타난 괄호는 정규 표현식에서 기억 장치처럼 쓰여서, 괄호의 안쪽 패턴과 일치한 부분을 나중에 사용할 수 있도록 기억한다.
예를 들어, 'Hi do you know your abc's?'
와 'The latest airplane designs evolved from slabcraft.'
두 문자열에서 일치에 성공하고, 일치하는 부분은 'abc' 일 것이다. 반면 후자에서는 일치하지는 않는데, 이 문자열은 부분 문자열로 'abc'
를 포함하긴 하지만, 정확하게 'abc'
를 포함하지는 않기 때문이다.
하나 이상의 'b'
를 찾는다거나 공백 문자를 찾는 등 직접적인 일치 이상의 탐색이 필요할 땐 특수 문자를 사용한다. 예컨대 하나의 'a'
이후에 0개 이상의 'b'
, 그 뒤의 'c'
와 일치해야 하면 /ab*c/
패턴을 사용할 수 있다. 'b'
뒤의 *
는 이전 항목의 0번 이상 반복을 의미한다.
정규표현식은 문자열 패턴을 검색, 추출, 치환하거나 유효성 검사 등의 작업을 수행하는데 사용되는 강력한 도구이다. 정규표현식은 다양한 상황에서 유용하게 활용될 수 있다.
문자열 검색 및 추출
이메일 주소, 전화번호, URL 등의 특정 패턴이나 문자열을 검색하거나 추출할 때 사용된다.
데이터 유효성 검사
사용자의 이메일 형식, 비밀번호와 숫자의 형식 등의 입력 데이터의 유효성을 검사하는 데 사용된다.
문자열 치환 및 변경
문자열 내의 특정 패턴을 다른 문자열로 치환하거나 변경할 때 사용된다. 예를 들어 특정 단어를 강조 표시하거나 바꾸는 작업에 활용될 수 있다.
파일 처리
파일명, 경로 등의 문자열에서 필요한 정보를 추출하거나 변경할 때 사용된다. 파일 확장자 추출, 경로 분리 등에 유용하다.
좋은 글 감사합니다.