2016-07-20 10 views

Antwort

2

Die negative Lookahead-Syntax ((?!...)) sieht voraus von wo auch immer es in der Regex ist. So wird Ihr (?!spec) mit dem verglichen, was diesem Punkt folgt, kurz vor dem \.. Mit anderen Worten, es wird mit der Dateiendung .ts oder .tsx verglichen. Das negative Lookahead stimmt nicht überein, sodass die gesamte Zeichenfolge nicht als Übereinstimmung zurückgewiesen wird.

Sie wollen ein negatives Lookbehind regex:

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

Hier ist ein demo (der "Unit-Tests" -Link auf der linken Seite des Bildschirms).


Das oben genannte geht davon aus, dass Ihre Regex-Variante negative Lookbehinds unterstützt; nicht alle Aromen von Regex tun. Wenn Sie werden mit einem regex Geschmack passieren, die nicht negativ Lookbehinds nicht unterstützt, können Sie eine komplexere negative Vorschau verwenden:

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

Dies sagt in der Tat „, von Anfang an beginnen, stellen Sie sicher, dass die Zeichenfolge Doesn ‚t in spec.ts oder spec.tsx beenden. wenn es nicht in dem endet, dann überein, wenn es in .ts oder .tsx"

Demo