질문:
Regex Lookbehind가 부족한 JavaScript에서는, 특정 조건을 제외하고 특정 패턴을 일치시키는 방법이 있습니까?
답변:
ECMAScript 2018 이전에는 JavaScript가 기본적으로 부정적인 LookBehind 어설션을 지원하지 않았습니다. 다음은 대체 접근 방식입니다.
^(?:(?!filename\.js$).)*\.js$
설명:
이 정규식은 문자열의 각 문자를 명시적으로 확인하여 뒤돌아보기를 시뮬레이션합니다. 뒤에 찾는 표현식("filename.js$")과 나머지 정규식(".js$")이 현재 문자에서 일치하지 않으면 해당 문자가 허용됩니다.
^ # Start of string (?: # Try to match the following: (?! # First assert that we can't match the following: filename\.js # filename.js $ # and end-of-string ) # End of negative lookahead . # Match any character )* # Repeat as needed \.js # Match .js $ # End of string
그러나 그 이후로 더 간단한 대안이 등장했습니다.
^(?!.*filename\.js$).*\.js$
이 후자의 접근 방식은 모든 문자에 대한 미리보기를 확인하지 않기 때문에 더 효율적입니다.
^ # Start of string (?! # Assert that we can't match the following: .* # any string, filename\.js # followed by filename.js $ # and end-of-string ) # End of negative lookahead .* # Match any string \.js # Match .js $ # End of string
위 내용은 Negative Lookahead는 JavaScript에서 Regex Lookbehind를 모방할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!