비전공자 코딩 배우기 _11주차 정규표현식

Jinny·2021년 7월 25일
0

TIL

목록 보기
8/28
post-thumbnail

정규표현식

리터럴 패턴

👉🏻 정규표현식 규칙을 슬래시(/)로 감싸 사용한다.

let pattern = /a/;
// 'a 를 찾는다'고 컴퓨터에 명령을 내리는 것이다.
// 찾고 싶은 a를 pattern 이라는 변수에 담았으므로 이 변수를 이용하여 a를 찾을 수 있다.

생성자 함수 호출 패턴

👉🏻 RegExp 객체의 생성자 함수를 호출하여 사용한다.

let pattern = new RegExp('a');
// new를 이용해서 정규 표현식 객체를 생성하고,
// 리터럴 패턴과 동일하게 'a를 찾는다'고 컴퓨터에 명령을 내리는 것이다.

🔎 RegExp 객체의 메소드

💡 exec()

execution의 줄임말로, 원하는 정보를 얻을 때 사용한다.
검색의 대상이 찾고자 하는 문자열에 대한 정보를 가지고 있으면 배열로 반환하고 없으면 null을 반환한다.

let pattern = /a/; // 찾고자 하는 문자열
pattern.exec('abcdefg') // 검색하려는 대상을 exec 메소드의 첫 번째 인자로 전달한다.

// 즉, 'abcdefg'가 'a'를 포함하고 있는지 확인한다.
// 'a'가 포함되어 있으므로, ['a']를 반환한다.
// 만약 pattern에 /z/를 한다면, 'abcdefg'에 'z'가 없으므로 null을 반환하게 된다.

💡 test()

찾고 싶은 문자열이 대상 안에 있는지 여부를 boolean 타입으로 리턴한다.

let pattern = /a/;
pattern.test('abcdefg');
// 'abcdefg'가 'a'를 포함하고 있으므로 true를 리턴한다.

🔎 String 객체의 메소드

💡 match()

RegExp.exec()와 비슷한 기능을 하며, 정규 표현식을 인자로 받아 주어진 문자열과 일치된 결과를 배열로 반환한다. 일치하지 않으면 null을 반환한다.

let pattern = /a/;
let str = 'abcdefg';
str.match(pattern);
// str 안에 pattern이 포함되어 있으므로 ['a']를 반환한다.

💡 replace()

문자열에서 찾고자 하는 대상을 검색하여 치환하려는 문자열로 변경 후 변경된 값을 리턴한다.
첫 번째 인자로는 정규표현식을, 두 번째 인자로는 치환하려는 문자열을 입력한다.

let pattern = /a/;
let str = 'abcdefg';
str.replace(pattern, 'b');
// str 안에서 pattern을 검색한 후 'b'로 변경하여 그 결과를 리턴한다.
// str = 'bbcdefg'로 리턴된다.

💡 split()

주어진 인자를 구분자로 삼아, 문자열을 부분 문자열로 나누어 그 결과를 배열로 리턴한다.

"123,456,789".split(",") // ["123", "456", "789"]
"123-456-789".split("-") // ["123", "456", "789"]

정규표현식을 인자로 받아 가장 처음 매칭되는 부분 문자열의 위치를 반환한다.
매칭되는 문자열이 없다면 -1을 반환한다.

"JavaScript".search(/script/); // -1  대소문자가 다르면 다른 것으로 간주된다.
"JavaScript".search(/Script/); // 4
"abcdefg".serch(/cd/); // 2

flag

정규표현식은 플래그를 설정해 줄 수 있으며, 플래그는 추가적인 검색 옵션의 역할을 한다.
이 플래그들은 각자 혹은 함께 사용하는 것이 모두 가능하며, 순서에 구분이 없다.

🚩 i

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

let withi = /a/i;
let withouti = /a/;
"ABCDEFG".match(withi); // ['A']
"ABCDEFG".match(withouti); // null

🚩 g

global의 약자로, g를 붙이면 검색된 모든 결과를 리턴한다.

let withg = /a/g;
let withoutg = /a/;
"abcdefga".match(withg); // ['a', 'a']
"abcdefga".match(withoutg); // ['a'] g 가 없으면 첫 번째 검색 결과만 반환된다.

🚩 m

m을 붙이면 다중행을 검색한다.

let str = `1st : all 
2nd : apple
3rd : april`;
str.match(/a/gm)
// 3개의 행을 검색하여 모든 a를 반환한다.
// ['a', 'a', 'a']
str.match(/a/m)
// m은 다중행을 검색하게 해 주지만, g를 빼고 검색하면 검색 대상을 찾는 순간 검색을 멈추기 때문에
// 첫 행의 ['a'] 만 리턴한다.
profile
코린이

0개의 댓글