>웹 프론트엔드 >JS 튜토리얼 >JavaScript Regex에서 Negative Lookbehind를 어떻게 구현할 수 있습니까?

JavaScript Regex에서 Negative Lookbehind를 어떻게 구현할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-19 06:53:13449검색

How Can I Implement Negative Lookbehind in JavaScript Regex?

JavaScript에서 Negative Lookbehind를 구현하는 방법

JavaScript는 기본적으로 Negative Lookbehind를 지원하지 않으므로 다음과 같은 문자열과 일치하는 정규식 생성을 방해합니다. 특정 문자로 시작하지 마십시오.

해결책 Lookbehind Assertions(2018년 이후)

2018년에 JavaScript는 긍정적 및 부정적 Lookbehind를 모두 허용하는 Lookbehind 주장을 도입했습니다.

  • 긍정적 Lookbehind: (?<=...)
  • 부정적 뒤돌아보기: (?

예를 들어 다음 정규 표현식은 'jim' 또는 'm'에는 'm' 문자가 있지만 'jam':

(?<!([abcdefg]))m

2018년 이전 솔루션

2018년 이전의 한 가지 해결 방법은 입력 문자열을 반전하고 반전된 정규식과 일치시킨 다음 성냥. 이 프로세스는 다음과 같이 구현할 수 있습니다.

const reverse = s => s.split('').reverse().join('');

const test = (stringToTests, reversedRegexp) => stringToTests
  .map(reverse)
  .forEach((s,i) => {
    const match = reversedRegexp.test(s);
    console.log(stringToTests[i], match, 'token:', match ? reverse(reversedRegexp.exec(s)[0]) : 'Ø');
  });<p><strong>예</strong></p>
<p>사용법을 설명하려면:</p>
<ul><li>에 언급된 초기 질문에 대해 문맥상 다음 정규식은 'jim' 또는 'm'의 'm'과 일치하지만 일치하지 않습니다. 'jam':</li></ul>
<pre class="brush:php;toolbar:false">test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/)
  • "max-height"는 일치하지만 "line-height"는 일치하지 않는 또 다른 예:
test(['max-height', 'line-height'], /thgieh(?!(-enil))/)

위 내용은 JavaScript Regex에서 Negative Lookbehind를 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.