JavaScript RegEx 그룹
정규식은 주어진 문자열의 문자 또는 단어 조합과 일치하는 패턴입니다. 정규 표현식은 JavaScript의 객체이기도 합니다.
이러한 패턴은 RegExp의 test()
및 exec()
와 matchAll()
, match()
, replaceAll()
, replace()
, search()
및 문자열의 split()
.
오늘의 포스트는 자바스크립트의 정규식 그룹에 대해 알아볼 것입니다.
JavaScript의 RegEx 그룹
패턴의 일부는 괄호 (...)
로 둘러쌀 수 있습니다. 이를 캡처 그룹
이라고 합니다.
여기에는 두 가지 효과가 있습니다.
- 일치 항목의 일부를 결과 배열에서 별도의 요소로 유지할 수 있습니다.
- 괄호 뒤에 한정사를 넣으면 괄호 전체에 적용됩니다.
통사론:
const re = /ab+c/;
const re = new RegExp('ab+c');
위의 구문은 일반 정규식 패턴을 보여줍니다. 미리 보기 어설션에는 긍정적
및 부정적
의 두 가지 방법이 있습니다.
긍정 예측의 구문은 (?=...
)입니다. 부정 예측에 대한 구성은 (?!...)
입니다. 순방향 부정은 패턴이 특정 패턴을 따르지 않는다는 것을 나타냅니다.
ES2018은 미리보기 어설션을 JavaScript에 통합하여 미리보기 어설션을 보완합니다. (?<=...)
로 표시된 백스페이스 어설션을 사용하면 다른 패턴이 선행하는 경우에만 패턴을 일치시킬 수 있습니다.
그룹 및 범위
문서에서 그룹 및 범위에 대한 자세한 정보를 찾을 수 있습니다.
캡처 그룹 이름 지정
문자를 괄호로 묶어 정규식의 일부를 그룹화할 수 있습니다. 이를 통해 패턴의 일부에만 교대를 제한하거나 전체 그룹에 양자화기를 적용할 수 있습니다.
또한 추가 처리를 위해 괄호 안의 일치하는 값을 추출할 수 있습니다.
다음 코드는 문자열에서 연도, 월 및 날짜를 찾는 방법의 예를 제공합니다.
const regEx = /(\d{4})-(\d{2})-(\d{2})/;
const matchedPattern = regEx.exec('2022-04-22');
console.log(matchedPattern[0]);
console.log(matchedPattern[1]);
console.log(matchedPattern[2]);
console.log(matchedPattern[3]);
위의 예에서 연도, 월, 일에 대한 정규식을 정의했습니다. 마지막으로 지정된 문자열에 대해 정규식을 실행하면 패턴을 캡처하여 일치하는 그룹과 그룹화합니다.
우리는 패턴이 년, 월, 일에 대한 것임을 기억해야 합니다. 전체 정규식을 실행한 후 아래와 같은 결과를 출력합니다.
출력:
"2022-04-22"
"2022"
"04"
"22"
위의 문제에 대한 해결책은 그룹을 캡처하는 것입니다. 가장 발전된 버전은 (?<name>...)
형식의 보다 표현적인 구문을 사용하여 그룹을 캡처하는 것입니다.
const regEx = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const matchedPattern = regEx.exec('2022-03-22');
console.log(matchedPattern.groups);
console.log(matchedPattern.groups.year);
console.log(matchedPattern.groups.month);
console.log(matchedPattern.groups.day);
위의 예에서 우리는 연도에 대한 정규식을 정의하고 연도 이름을 지정했습니다. 마찬가지로 월과 일에 대한 정규식을 정의했습니다.
마지막으로 지정된 문자열에 대해 정규식을 실행하면 패턴을 캡처하여 일치하는 그룹과 그룹화합니다. 전체 정규식을 실행한 후 아래와 같은 결과를 출력합니다.
출력:
{
day: "22",
month: "03",
year: "2022"
}
"2022"
"03"
"22"
여기에서 전체 코드에 액세스할 수도 있습니다.
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn