Регулярное выражение - начинается с определенной строки, но не заканчивается другой подстрокой - PullRequest
1 голос
/ 05 апреля 2019

Учитывая две строки s1 и s2, я пытаюсь написать регулярное выражение, которое будет соответствовать строке, которая начинается с s1, но не заканчивается s2

Пример (s1 = ТЕСТ, s2 = ПЛОХОЙ)

  • совпадение TEST-101
  • TEST-SOME-DESC match
  • TEST-101-BAD не должен совпадать
  • TEST-SOME-DESC-BAD не должен совпадать

Вот что я попробовал для этого примера, но он не работает: /^TEST-.*((?!BAD))$/

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Попробуйте это:

/^(?!.+BAD$)TEST-.*/

Это соответствует началу, идет вперед и отклоняет все, что заканчивается в плохой строке, а затем соответствует желаемому шаблону.

Вот демо , который проходит все четыре ваших теста (нажмите «RUN TESTS» внизу для подтверждения).

0 голосов
/ 05 апреля 2019

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

let arr = [`TEST-101`, `TEST-SOME-DESC`,`TEST-101-BAD`,`TEST-SOME-DESC-BAD`]

arr.forEach(e=>{
  console.log(e, e.startsWith('TEST') && !e.endsWith('BAD'))
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...