Соответствие Javascript - включите что-нибудь с 2 ключевыми словами, игнорируйте все с 1 ключевым словом

1

Я хотел бы включить строку, если она содержит "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 из регулярного выражения

  • 2
    Пожалуйста, поделитесь входом и ожидаемым результатом.
  • 2
    /^(?!.*http).*(jpg|png)/i
Показать ещё 3 комментария
Теги:
match

1 ответ

1
Лучший ответ

Вы можете использовать

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

подробности

  • ^ - начало строки
  • (?!.*http) - ни один http не разрешен после того, как все символы 0+, кроме символов прерывания строки, сразу справа от текущего местоположения разрешены
  • .* - любые символы 0+, кроме символов разрыва строки, сразу справа от текущего местоположения
  • (jpg|png) - либо jpg либо png.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню