반응형
정규 표현식이란
정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다.
참고💡
- JavaScript에서는 정규 표현식도 객체로서, RegExp 객체의 exec()와 test() 메서드를 사용할 수 있습니다.
- String의 match(), matchAll(), replace(), replaceAll(), search(), split() 메서드와도 함께 사용할 수 있습니다.
정규 표현식 생성하기
정규 표현식은 두 가지 방법으로 만들 수 있습니다.
1. 정규 표현식 리터럴
const re = /ab+c/;
2. RegExp 객체의 생성자 호출
const re = new RegExp("ab+c");
정규 표현식 패턴 작성하기
문자 클래스(Character classes)
문자와 숫자처럼 다른 유형의 문자를 구분합니다.
Characters | Meaning | Example |
\d | 모든 숫자(아라비아 숫자)와 일치합니다. [0-9]와 같습니다. | /\d/ 또는 /[0-9]/ 는 "B2 is suite number"의 "2"와 일치합니다. |
\D | 숫자(아라비아 숫자)가 아닌 모든 문자와 일치합니다. [^0-9]와 같습니다. | /\D/ 또는 /[^0-9]/는 "B2 is suite number"의 "B"와 일치합니다. |
\w | 밑줄(_)을 포함한 기본 라틴 문자의 모든 영숫자와 일치합니다. [A-Za-z0-9_]와 같습니다. | /\w/는"apple"의 "a", "$5.28"의 "5", "3D"의 "3", "Emanuel"의 "m"과 일치합니다. |
\W | 기본 라틴 문자에서 단어 문자가 아닌 모든 문자를 일치합니다. [^A-Za-z0-9__]와 같습니다. | /\W/ 또는 /[^A-Za-z0-9_]/는 "50%"에서 "%"와 "Émanuel"에서 "É"와 일치합니다. |
\s | 공백, 탭, 폼 피드, 라인 피드 및 기타 유니코드 스페이스를 포함한 단일 공백 문자와 일치합니다. [\f\n\r\t\v\u0020\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]와 같습니다. | /\s\w*/는 "foo bar"의 "bar"와 일치합니다. |
\S | 공백 이외의 단일 문자와 일치합니다. [^\f\n\r\t\v\u0020\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]와 같습니다. | /\S\w*/ "foo bar"에서 "foo"와 일치합니다. |
\t | 가로 탭과 일치합니다. | |
\r | 캐리지 리턴과 일치합니다. | |
\n | 줄 바꿈과 일치합니다. | |
\v | 세로 탭과 일치합니다. | |
\f | 폼피드와 일치합니다. |
어서션(Assertions)
Characters | Meaning | Example |
^ | 입력의 처음과 일치합니다. | /^A/는 "an A"의 "A"와 일치하지 않지만 "An A"의 첫 번째 "A"와 일치합니다. |
$ | 입력의 끝과 일치합니다. | /t$/는 "eater"의 "t"와 일치하지 않지만 "eat"에서는 일치합니다. |
그룹(Groups)
Characters | Meaning | Example | |
Capturing group | (x) | x와 일치하고 일치를 기억합니다. | /(foo)/ "foo"를 매치하고 "foo bar"에서 "foo"를 기억합니다. |
Named capturing group | (?<Name>x) | "x"와 일치하고 이를 <Name>에서 지정한 이름으로 반환된 일치 항목의 그룹 속성에 저장합니다. 그룹 이름에는 꺾쇠 괄호(< 및 >)가 필요합니다. | 전화 번호에서 미국 지역 번호를 추출하기 위해 /\((?<area>\d\d\d)\)/를 사용할 수 있습니다. 결과 번호는 matchs.groups.area 아래에 표시됩니다. |
Non-capturing group | (?:x) | "x"와 일치하지만 일치 항목을 기억하지 않습니다. 일치하는 부분 문자열은 결과 배열의 요소([1], …, [n]) 또는 미리 정의된 RegExp 개체의 속성($1, …, $9)에서 불러올 수 없습니다. |
기타 기능
이러한 기능은 패턴 자체를 지정하지 않고 패턴을 구성하는 데 사용됩니다.
Characters | Meaning | Example | |
Disjunction | | | | 연산자는 두 개 이상의 대안을 분리합니다. 패턴은 먼저 첫 번째 대안과 일치하려고 시도하고, 실패하면 두 번째 대안과 일치하려고 시도합니다. | 연산자는 정규식에서 가장 낮은 우선 순위를 갖습니다. 더 큰 패턴의 일부로 분할을 사용하려면 그룹화해야 합니다. |
/a|ab/는 "abc"의 "a"와 일치합니다. (첫 번째 대안이 이미 성공적으로 일치하기 때문에 다음은 "ab" 대신 "a"와 일치합니다) /a|ab/.exec("abc"); // ['a'] |
정규 표현식 테스트 사이트
Reference
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_expressions
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions/Character_classes
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions/Assertions
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions/Groups_and_backreferences
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Disjunction
반응형
'JavaScript' 카테고리의 다른 글
highcharts.js.map 404 오류 해결하기 (0) | 2022.03.15 |
---|---|
[Vue.js] <input type="file"> 요소에 동일 파일 연속 선택 시, change 이벤트가 발생되지 않는 문제 해결 방법 (0) | 2021.09.07 |
[javascript] 함수 표현식과 함수 선언식 (0) | 2021.03.30 |
[공유하기] 모바일 웹 URL 복사 기능 구현하기 (0) | 2021.03.03 |
[공유하기] 모바일 웹에서 카카오톡 공유하기 기능 구현하기 (0) | 2021.03.03 |