[JavaScript] 정규표현식

ReKoding·2023년 9월 21일

JavaScript

목록 보기
2/6

정규 표현식(Regular Expression)


정규식은 문자열의 일치하는 조합을 찾거나 대체하는데 사용되는 패턴입니다. JavaScript에서 정규 표현식도 객체입니다.

정규식을 사용하면 간단한 문자 검색부터 이메일, 전화번호, 아이디, 패스워드 등의 복잡한 문자를 쉽게 검사할 수 있습니다.

정규식 메서드(Methods)


match

  • 문자열.match(정규식) : 일치하는 문자열 배열로 반환
const regex = /^(010|011|016|017|018|019)-\d{3,4}-\d{4}$/gm;
const str = `010-123-1234`;
const result = str.match(regex); // ['010-123-1234']

  • 문자열.search(정규식) : 일치하는 문자열의 인덱스 반환
// (찾는 값이 없으면 -1 반환);
const regex = /^\d{5}$/;
const str = `1234`;
const result = str.search(regex); // -1

test

  • 정규식.test(문자열) : 일치 여부를 true/false로 반환
const regex = /^\d{5}$/;
const str = `12345`;
const result = regex.test(str); // true;

replace

  • 문자열.replace(정규식,대체문자) : 일치하는 문자열을 대체하고 대체된 문자열 반환
const regex = /[1-9]/gi;
const str = `This123is456Java789script`;
const result = str.replace(regex, "");
console.log(result); // ThisisJavascript

정규식 플래그


플래그는 정규표현식 뒤에 붙여 쓰는 것으로 자세한 검색을 설정할 수 있다.

  • g : 전역 검색(global);
  • i : 영어 대소문자를 구분하지 않고 검색(ignore Case)
  • m : 문자열의 행이 바뀌더라도 검색(multi line)
  • u : 유니코드(unicode)

정규식 패턴


정규 표현식 패턴설명
^줄(Line)의 시작에서 일치, /^abc/
$줄(Line)의 끝에서 일치, /xyz$/
.임의의 한 문자와 일치
a|ba 또는 b와 일치, 인덱스가 작은 것을 우선 반환
*0회 이상 연속으로 반복되는 문자와 가능한 많이 일치, {0,}와 동일
*?0회 이상 연속으로 반복되는 문자와 가능한 적게 일치(lazy), {0}와 동일
+1회 이상 연속으로 반복되는 문자에 가능한 많이 일치, {1,}와 동일
+?1회 이상 연속으로 반복되는 문자에 가능한 적게 일치(lazy), {1}와 동일
?없거나 1회 가능한 많이 일치
??없거나 1회 가능한 적게 일치(lazy)
{3}3(숫자)개 연속 일치
{3,}3개 이상 연속 일치
{3,5}3개 이상 5개 이하(3~5개) 연속 일치
{3,5}?3개 이상 5개 이하(3~5개) 연속 중 가능한 적은 3개 연속 일치(lazy), {3}와 동일
()캡처(Capture)할 그룹
(?<>)캡처 그룹 이름 지정, /(?pattern)/ ES2018
\1~9정규식 내 캡처된 값 참조, /(abc)\1/
(?:)캡처(Capture)하지 않는 그룹
(?=)앞쪽 일치(Lookahead), /ab(?=c)/
(?!)부정 앞쪽 일치(Negative Lookahead), /ab(?!c)/
(?<=)뒤쪽 일치(Lookbehind), /(?<=ab)c/ ES2018
(?<!)부정 뒤쪽 일치(Negative Lookbehind), /(? ES2018
[abc]a 또는 b 또는 c와 일치, 점(.)이나 별표(*) 같은 특수 문자는 []안에서 특수 문자가 아님, /\.[.]/
[a-z]a부터 z 사이의 문자 구간에 일치(영어 소문자)
[A-Z]A부터 Z 사이의 문자 구간에 일치(영어 대문자)
[0-9]0부터 9 사이의 문자 구간에 일치(숫자)
[가-힣]가부터 힣 사이의 문자 구간에 일치(한글)
[2-7]2부터 7 사이의 문자 구간에 일치(2,3,4,5,6,7)
[b-f]b부터 f 사이의 문자 구간에 일치(b,c,d,e,f)
[다-바]다부터 바 사이의 문자 구간에 일치(다,라,마,바)
[^abc]a 또는 b 또는 c가 아닌 나머지 문자에 일치(부정)
\이스케이프 문자, /\.\?\/\$\^/
\b63개 문자(영문 대소문자 52개 + 숫자 10개 + _(underscore))가 아닌 나머지 문자에 일치하는 경계(boundary)
\B63개 문자에 일치하는 경계
\d숫자(Digit)에 일치
\D숫자가 아닌 문자에 일치
\p{}유니코드 속성(Property) 집합에 맞는 문자에 일치, /\p{Emoji}/u ES2018
\P{}유니코드 속성 집합에 맞지 않는 문자에 일치, /\p{Uppercase}/u ES2018
\s공백(Space, Tab 등)에 일치
\S공백이 아닌 문자에 일치
\w63개 문자(Word, 영문 대소문자 52개 + 숫자 10개 + _)에 일치
\W63개 문자가 아닌 나머지 문자에 일치
\x16진수 문자에 일치, /\x61/는 a에 일치
\08진수 문자에 일치, /\141/은 a에 일치
\u유니코드(Unicode) 문자에 일치, /\u0061/는 a에 일치
\c제어(Control) 문자에 일치
\f폼 피드(FF, U+000C) 문자에 일치
\n줄 바꿈(LF, U+000A) 문자에 일치
\r캐리지 리턴(CR, U+000D) 문자에 일치
\t탭 (U+0009) 문자에 일치
$`문자 대체(replace) 시 일치한 문자 이전 값 참조
$'문자 대체(replace) 시 일치한 문자 이후 값 참조
$+문자 대체(replace) 시 마지막으로 캡처된 값 참조
$&문자 대체(replace) 시 일치한 문자 결과 전체 참조
$_문자 대체(replace) 시 입력(input)된 문자 전체 참조
$1~9문자 대체(replace) 시 캡처(Capture)된 값 참조

참고

HEROPY - 정규식 표현, 이렇게 시작하자!

profile
코드로 기록하며 성장하는 개발자, 지식의 공유와 개발 커뮤니티에 기여하는 열정을 가지고 있습니다.

0개의 댓글