2017-12-05 8 views
1

Ich möchte eine Zeichenfolge einfügen, wenn sie entweder 'jpg' oder 'png' enthält, aber die Zeichenfolge ausschließt, wenn 'http' enthalten ist.Javascript match - alles mit 2 Schlüsselwörtern einschließen, alles mit 1 Schlüsselwort ignorieren

Ich habe folgendes versucht, aber es enthält noch die Zeichenfolge, wenn es sowohl http und entweder png oder jpg enthält:

myString.match(/(?!http)(jpg|png)/i)

Ein Eingang erwartet http://s3-eu-west-1.amazonaws.com/bucket/1512491455764.png?Signature=signature

sein würde, da so enthält http und png, diese Zeichenfolge würde ignoriert/false von der Regex zurückgegeben

+2

Bitte teilen Sie Eingang und erwartete Ausgabe. –

+2

'/^(?!.* http). * (Jpg | png)/i' –

+0

Ich nehme an, Sie haben einige Zeichen zwischen http und jpg oder png? Ihre Regex sollte dies in Betracht ziehen – Skwal

Antwort

1

Sie können

verwenden
/^(?!.*http).*(jpg|png)/i 

Einzelheiten

  • ^ - Beginn der Zeichenfolge
  • (?!.*http) - keine http nach irgendwelchen 0+ Zeichen außer Zeilenumbruch Zeichen unmittelbar rechts von der aktuellen Position erlaubt ist, darf
  • .* - alle 0+ Zeichen außer Zeilenumbruchzeichen unmittelbar rechts vom aktuellen Standort
  • (jpg|png) - entweder jpg oder png.
Verwandte Themen