Подстрока как результат поиска 2 слов - PullRequest
0 голосов
/ 13 января 2020

У меня есть классное регулярное выражение отсюда Регулярное выражение для сопоставления строки, содержащей два имени в любом порядке

^(?=.*\bjack\b)(?=.*\bjames\b).*$

Но мне нужна подстрока в качестве результата.

Например:


  • hi jack here is james whats up
  • Мне нужно как результат jack here is james

  • hi james here is jack whats up
  • Мне нужно в результате james here is jack

Я не могу использовать jack или james в регулярных выражениях более 1 раза.

Как я могу получить это?

Ответы [ 2 ]

2 голосов
/ 13 января 2020

Вы можете просто использовать чередование здесь:

^.*\b(jack\b.*\bjames|james\b.*\bjack)\b.*$

Демо

В этом случае контент, который вы хотите сопоставить, будет соответствовать появиться в первой группе захвата, см. демонстрационную ссылку выше.

0 голосов
/ 13 января 2020
/j[ack|ames]+ here is j[ack|ames]+/g

re = /j[ack|ames]+ here is j[ack|ames]+/g

let arr = [
    "hi jack here is james whats up",
    "hi james here is jack whats up"
]

console.log(arr.map(str => str.match(re)[0]))
...