У меня есть классное регулярное выражение отсюда Регулярное выражение для сопоставления строки, содержащей два имени в любом порядке
^(?=.*\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 раза.
Как я могу получить это?
Вы можете просто использовать чередование здесь:
^.*\b(jack\b.*\bjames|james\b.*\bjack)\b.*$
Демо
В этом случае контент, который вы хотите сопоставить, будет соответствовать появиться в первой группе захвата, см. демонстрационную ссылку выше.
/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]))