생활코딩 - 정규 표현식

primav·2024년 9월 30일

Javascript

목록 보기
11/14
post-thumbnail

#13 - 정규 표현식

정규 표현식

자바스크립트와 같은 언어이며, 여러 언어에서 사용이 가능하다.
이 포스트에서는 정규표현식을 자바스크립트에서 사용하는 방법에 대해 알아보고자 한다.

💡 정규표현식
문자열에서 특정한 문자를 찾아내는 도구

이 도구를 이용하면 수십줄이 필요한 작업을 한줄로 끝낼 수 있다.


패턴 만들기

컴파일과 실행

💡 컴파일
어떠한 작업을 하기 위해 어떠한 문자가 있는지, 없는지 찾는 단계
➡️ 패턴을 찾는 단계 (대상)

💡 실행
대상(패턴)에 대해 구체적으로 어떠한 작업을 하는 것

찾고자 하는 정보를 패턴에 저장하여 패턴을 만드는데, 이 패턴을 만드는 방법에는 두가지 방법이 있다.

  1. 정규 표현식 리터럴
  2. 정규 표현식 객체 생성자

정규 표현식 리터럴

var pattern = /a/ // a라는 문자열 찾기
// 슬래시 안에 있는 문자열을 찾아내는 것

정규 표현식 객체 생성자

var pattern = new RegExp('a') // 정규 표현식 객체를 만든다.
// a라는 문자열 찾기

RegExp 객체의 사용

정규 표현식 사용법

  1. 작업의 대상 찾기
  2. 어떤 작업을 할 것인지
  3. 대상에게 작업 실행

정규 표현식 메소드 실행

정규 표현식을 컴파일해서 객체를 만들었다면 이제 문자열에서 원하는 문자를 찾아내야 한다.
➡️ 작업의 대상 찾기!

RegExp.exec()

정규 표현식이 찾고자 하는 대상을 첫번째 인자로 전달하여, 대상에서 패턴이 찾는 정보를 찾아서 배열로 리턴하는 함수이다.

있으면 찾은 패턴을 찾은 정보를 리턴하고 없으면 null을 리턴한다.

var pattern = /a/;
pattern.exec('abcdef'); // ["a"]

var pattern = /a./;
pattern.exec('abcde'); // ["ab"]
// 점이 오는 위치에 어떤 문자가 오든 상관없이 하나의 문자가 와야 함

var pattern = /a/;
pattern.exec('bcdef'); // null

RegExp.test()

대상에게 정규표현식이 찾고자 하는 패턴이 있는 지 확인하여 true / false로 반환한다.

var pattern = /a/;
pattern.test('abcde'); // true

var pattern = /a/;
pattern.test('bcde'); // false

String과 정규 표현식

String.match()

RegExp.exec()와 비슷하다.

var pattern = /a/;

var str = 'abcdef';
str.match(pattern); // ["a"]

var str = 'bcdef';
str.match(pattern); // null

String.replace()

문자열에서 패턴을 검색해서 이를 변경한 후에 변경된 값을 리턴한다.

var pattern = /a/;
var str = 'abcdef';

str.replace(pattern, 'A'); // "Abcdef"

옵션

정규표현식은 패턴을 만들때 옵션을 설정할 수 있고, 이 옵션에 따라 검출되는 데이터가 달라진다.

i

i를 붙이면 대소문자를 구분하지 않는다.

var xi = /a/; // i 옵션 사용하지 않는 변수
"Abcde".match(xi) // 대상.match(패턴) --> null

var oi = /a/i; // i 옵션 사용 --> /a/i
"Abcde".match(oi) // ["A"] 대소문자 구분 없이 검출

g

g를 붙이면 검색된 모든 결과를 리턴한다.

var xg = /a/; // g 옵션 사용 안함
"abceda".match(xg); // ["a"] // 만족하는 것 하나만 출력

var og = /a/g;  // g 옵션 사용함
"abcdea".match(og); // ["a", "a"] // 만족하는 모든 결과 출력

캡처

괄호 안의 패턴은 마치 변수처럼 재사용할 수 있다.
그룹을 묶어 값으로 처리해서 원하는 대로 처리할 수 있다.

$ - 치환

var str = "coding everybody"
var result = str.replace(pattern, "$2, $1")

console.log(result) // everybody, coding

(\w+), \s, (\w+) --> $2, , , $1

정규표현식 유용한 사이트

✔️ 복잡한 정규 표현식을 보기 쉽게 해주는 사이트 - 정규 표현식 시각화 사이트

  • ( ) - 그룹
  • \w - A~Z , a~z , 0~9
  • + - 앞의 문자가 하나 이상인 경우 유효함 ( # - x / a - o / aa - o)
  • \s - 공백

그렇다면 위의 정규 표현식을 만족하는 예시는 무엇일까?
A A, AA AA, 00 00 등이 있다.

🎯 정규 표현식을 만족하는지 테스트 해주는 사이트 - 정규 표현식 빌더

✔️ 정규표현식 만족안하는 경우 - 0 match

✔️ 정규표현식 만족하는 경우 - 1 match

0개의 댓글