정규표현식(Regex) 정리

박재현·2022년 3월 3일
0
post-custom-banner

💡 정규식 패턴(표현식)

정규식 패턴설명
^줄(Line)의 시작에서 일치 /^abc/
$줄(Line)의 끝에서 일치 /xyz$/
.(특수기호, 띄어쓰기를 포함한) 임의의 한 문자
a⎮ba or b 와 일치, 인덱스가 작은 것을 우선 반환
*0회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {0,} 와 동일
*?0회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {0} 와 동일
+1회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {1,} 와 동일
+?1회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {1} 와 동일
{3}숫자 3개 연속 일치
{3,}3개 이상 연속 일치
{3, 5}3개 이상 5개 이하 연속 일치
()캡쳐(capture)할 그룹
[a-z]a부터 z 사이의 문자 구간에 일치(영어 소문자)
[A-Z]A부터 Z 사이의 문자 구간에 일치(영어 대문자)
[0-9]0부터 9 사이의 문자 구간에 일치(숫자)
(역슬래쉬)escape 문자. 특수 기호 앞에 \를 붙이면 정규식 패턴이 아닌, 기호 자체로 인식
\d숫자를 검색함. /[0-9]/와 동일
\D숫자가 아닌 문자를 검색함. /[^0-9]/와 동일
\w영어대소문자, 숫자, (underscore)를 검색함. /[A-Za-z0-9]/ 와 동일
\W영어대소문자, 숫자, (underscore)가 아닌 문자를 검색함. /[^A-Za-z0-9]/ 와 동일
[^][]안의 문자열 앞에 ^이 쓰이면, []안에 없는 문자를 검색함

💡 정규표현식 사용하기

📌 리터럴 패턴

  • 슬래시(/)로 감싸서 활용
  • 슬래시 사이에 있는 문자열에 포함되는 것 찾고 싶을 때
let pattern = /c/;

📌 생성자 함수 호출 패턴

  • RegExp 객체의 생성자 함수를 호출하여 사용
let pattern = new RegExp('c');

💡 정규표현식 내장 메소드

  • String 객체에서도 정규표현식을 사용할 수 있는 내장메소드를 가지고 있음.
  • 내장 메소드를 이용하면 어떤 문자열 안에 원하는 정보를 찾거나 특정 패턴에 대응하는 문자열을 검색, 추출, 다른 문자열로 치환

📌 RegExp 객체의 메소드

exec()

해당 문자열을 포함하고 있다면 배열로 반환
없다면 null 반환

let pattern = /c/; // 찾고자 하는 문자열
console.log(pattern.exec('abcde'))
// [ 'c', index: 2, input: 'abcde', groups: undefined ]

test()

  • 찾고자 하는 문자열이 대상안에 있는지에 대해 boolean 리턴
let pattern = /c/;
console.log(pattern.test('abcde'));
// true

📌 String 객체의 메소드

match()

  • RegExp.exec() 와 비슷한 기능을 하며, 정규 표현식을 인자로 받아 주어진 문자열과 일치된 결과를 배열로 반환
  • 없다면 null 리턴
let pattern = /c/;
let str = 'abcde';
console.log(str.match(pattern));
// [ 'c', index: 2, input: 'abcde', groups: undefined ]

replace()

  • 첫 번째 인자로 검색 후, 두 번째 인자로 치환
let pattern = /cd/;
let str = 'abcde';
console.log(str.replace(pattern, 'C'));
// abCe

split()

  • 주어진 인자를 구분자로 삼아, 문자열을 부분 문자열로 나누어 그 결과를 배열로 반환
"123,456,789".split(",")  // ["123", "456", "789"]
"12304560789".split("0")  // ["123", "456", "789"]
  • 정규표현식을 인자로 받아 가장 처음 매칭되는 부분 문자열의 위치를 반환
  • 매칭되는 문자열이 없으면 -1을 반환합니다.
"JavaScript".search(/script/); // -1 대소문자를 구분합니다
"JavaScript".search(/Script/); // 4
"abcdefg".search(/c/); // 2

📌 flag

  • 추가적인 검색 옵션의 역할

i

  • i를 붙이면 대소문자를 구분하지 않습니다.
const flagI = "ABCDE".match(/c/i); 
console.log(flagI)
// [ 'C', index: 2, input: 'ABCDE', groups: undefined ]

const answer = "ABCDE".match(/c/); 
console.log(answer)
// null

g

  • global 의 약자로, g 를 붙이면 검색된 모든 결과를 리턴합니다.
let flagG = "abcdeabcde".match(/c/g); // ['c', 'c']
console.log(flagG)
// [ 'c', 'c' ]

let answer = "abcdeabcde".match(/c/);
console.log(answer)
// [ 'c', index: 2, input: 'abcdeabcde', groups: undefined ]

m

  • m을 붙이면 다중행을 검색합니다.
  let str = `1st : abcde
  2nd : abcde
  3rd : abcde`;

let flagG = str.match(/c/gm)
console.log(flagG)
// [ 'c', 'c', 'c' ]

let answer = str.match(/c/m)
console.log(answer)
//[ 'c' ]
post-custom-banner

0개의 댓글