정규표현식은 이전 포스팅에도 이야기한 것처럼 문자를 검색하고 대체하고 추출하는 방식을 제공하는 다양한 환경에서 사용할 수 있는 기능입니다. 특히, 간단한 문자 검색부터 이메일, 패스워드 검사 등의 복잡한 문자 일치 기능들을 정규식 패턴으로 빠르게 수행할 수 있습니다.
정규표현식은 크게 아래와 같은 역할을 수행합니다.
1. 문자 검색(search)
2. 문자 대체(replace)
3. 문자 추출(extract)
실제로 정규표현식을 작성하며 적용할 수 있는 사이트가 있습니다. 아래 사이트를 통해 정규표현식을 활용해볼 수 있습니다.
https://regex101.com/
https://regexr.com/
https://regexper.com/
JavaScript를 통해 정규표현식을 생성하는 방법은 크게 두 가지가 있습니다. 이는 생성자 함수 방식과 리터럴(Literal) 방식입니다.
new RegExp('표현', '옵션') new RegExp('[a-z]', 'gi') // [a-z]: a-z까지의 영어 소문자를 검색하는 패턴 // gi: g는 일치하는 모든 내용을 검색, i는 대문자와 소문자 구별 없음의 옵션
new 키워드를 통해 생성된 정규표현식이 생성자 방식이며, 이렇게 생성된 결과를 특정한 변수에 받아서 활용할 수 있습니다. 첫 번째 인수로는 '표현의 패턴', 그리고 두 번째 인수로는 '패턴을 어떠한 방식으로 검색할 것인지에 대한 옵션'을 추가할 수 있습니다.
/표현/옵션 /[a-z]/gi
생성자 방식과 동일하게 작동하는 리터럴 방식입니다. 위에서 확인할 수 있다시피 생성자 방식보다 간단한 방식으로 작성되므로 이 방식이 사용 빈도가 높습니다.
const str = ` 010-1234-5678 the7632@gmail.com http://www.omdbapi.com/?apikey=2181d79b&s=frozen The quick brown fox jumps over the lazy dog. abbcccdddd ` const regexp1 = new RegExp('the', 'g') // 일치하는 모든 내용을 검색 console.log(str.match(regexp1)) // (2) ["the", "the"] const regexp2 = new RegExp('the', 'gi') // 일치하는 모든 내용을 검색하되 대문자, 소문자 구별 없음 console.log(str.match(regexp2)) // (3) ["the", "The", "the"] const regexp3 = /the/gi // 리터럴 방식으로 정규식 생성 console.log(str.match(regexp3)) // (3) ["the", "The", "the"]