⊗jsSpRELAB 133 of 294 menu

JavaScript 정규식의 긍정형 전방 탐색과 부정형 전방 탐색

때때로 다음과 같은 유형의 문제를 해결해야 할 때가 있습니다: 문자열 'aaa'를 찾아 '!'로 바꾸되, 'aaa' 뒤에 'x'가 있을 때만 바꾸고, 'x' 자체는 바꾸지 않는 경우입니다. 만약 이 문제를 '직접적으로' 해결하려고 한다면, 성공하지 못할 것입니다:

'aaax baaa'.replace(/aaax/g, '!'); // '! baaa'를 반환하지만, 우리는 '!x baaa'를 원했습니다

전방 탐색

이 문제를 해결하려면, 'x'를 바꾸지 않아야 한다고 표현할 방법이 필요합니다. 이것은 특수 괄호 (?= )를 사용하여 수행되며, 이 괄호는 단순히 확인만 하고 자신은 포착하지 않습니다.

이 괄호를 긍정형 전방 탐색이라고 합니다. 긍정형이라고 하는 이유는 'x'(우리의 경우)가 반드시 있어야만 치환이 발생하기 때문입니다.

이 괄호를 사용하여 우리의 문제를 해결해 보겠습니다:

'aaax aaab'.replace(/aaa(?=x)/g, '!'); // '!x aaab'를 반환합니다

반대로 부정형 전방 탐색 - (?! ) - 도 있습니다. 이것은 어떤 것이 없어야 한다고 말합니다. 다음 예제에서는 'aaa' 뒤에 'x'가 '없을 때만' 치환이 발생합니다:

'aaax aaab'.replace(/aaa(?!x)/g, '!'); // 'aaax !b'를 반환합니다

후방 탐색

유사하게 긍정형 후방 탐색 - (?<= ) - 이 있습니다. 다음 예제에서는 'aaa' 앞에 'x'가 있을 때만 치환이 발생합니다:

'xaaa'.replace(/(?<=x)aaa/g, '!'); // 'x!'를 반환합니다

그리고 부정형 후방 탐색 - (?<! ) - 도 있습니다. 다음 예제에서는 'aaa' 앞에 'x'가 없을 때만 치환이 발생합니다:

'baaa'.replace(/(?<!x)aaa/g, '!'); // 'b!'를 반환합니다

실습 문제

함수 이름들을 포함하는 문자열이 주어졌습니다:

let str = 'func1() func2() func3()';

문자열에서 함수 이름들의 배열을 얻으세요.

태그가 포함된 문자열이 주어졌습니다:

let str = '<a href="" class="eee" id="zzz">';

이 태그의 속성 이름들의 배열을 얻으세요.

변수들이 포함된 문자열이 주어졌습니다:

let str = '$aaa $bbb $ccc xxxx';

달러 기호($) 앞에 있는 하위 문자열들을 얻으세요.

한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부