2016-07-20 3 views

답변

2

부울 룩어 헤드 구문 ((?!...))은 앞에 있으며은 정규식에있는 모든 위치에서 찾습니다. 따라서 귀하의 (?!spec)은 그 시점 다음에있는 \. 직전과 비교됩니다. 즉, 파일 확장자 인 .ts 또는 .tsx과 비교됩니다. 부정적인 미리보기가 일치하지 않으므로 전체 문자열이 일치 항목으로 거부되지 않습니다. 여기

(?<!spec)\.(ts|tsx)$ 

는 (화면 왼쪽에있는 "단위 테스트"링크 참조) demo입니다 :

당신은 부정적인 lookbehind 정규식을 원한다.


위의 내용은 정규 표현식이 부정적인 lookbehind를 지원한다고 가정합니다. regex의 모든 맛이 아닙니다. 아무튼 확실히 문자열을 처음부터 시작 "

^(?!.*spec\.tsx?$).*\.tsx?$ 

이 말한다, 효과 : 당신이 부정적인 lookbehinds를 지원하지 않는 정규식 풍미를 사용하는 일이 있다면, 당신은 더 복잡한 부정적 예측을 사용할 수 있습니다 '이 t은. spec.ts 또는 spec.tsx로 끝나는 것이 그 끝나지 않는 경우가 .ts 또는 .tsx에 끝나는 경우, 다음과 일치 "

Demo