Я хотел бы включить строку, если она содержит "jpg" или "png", но исключает строку, если она содержит "http".
Я пробовал следующее, но он по-прежнему включает строку, если она содержит как http, так и png или jpg:
myString.match(/(?!http)(jpg|png)/i)
Ожидаемым результатом будет http://s3-eu-west-1.amazonaws.com/bucket/1512491455764.png?Signature=signature
Поскольку это содержит как http, так и png, эта строка будет проигнорирована/возвращает false из регулярного выражения
Вы можете использовать
/^(?!.*http).*(jpg|png)/i
подробности
^
- начало строки(?!.*http)
- ни один http
не разрешен после того, как все символы 0+, кроме символов прерывания строки, сразу справа от текущего местоположения разрешены.*
- любые символы 0+, кроме символов разрыва строки, сразу справа от текущего местоположения(jpg|png)
- либо jpg
либо png
.
/^(?!.*http).*(jpg|png)/i