Как отфильтровать 5-буквенную строку после определенного ключевого слова и вернуть в виде массива, используя Javascript? - PullRequest
0 голосов
/ 09 марта 2020

Как отфильтровать 5-буквенную строку после определенного ключевого слова, которое встречается каждый раз в строке, и вернуть в виде массива, используя Javascript?

Пример строки: My secret code is 12345 and his secret code is 67890

Итак, из приведенного выше примера верните 5 символов рядом с ключевым словом - секретный код равен . Итак, мне нужно «12345» и «67890» в массиве, который идет после ключевого слова - секретный код .

Ожидаемый результат: ["12345", "67890"]

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Попробуйте

s.match(new RegExp(`${keyword}.{5}`,'g')).map(x=>x.substr(-5))

s="My secret code is 12345 and his secret code is 54321"
keyword="secret code is ";

m = s.match(new RegExp(`${keyword}.{5}`,'g')).map(x=>x.substr(-5))

console.log(m);

keyword должен был экранировать специальные символы регулярного выражения - подробнее здесь

0 голосов
/ 09 марта 2020
function getCodes(str) {
  return str.match(/(?<=secret code is ).{5}/g)
}
getCodes("My secret code is 12345 and his secret code is 67890")
// will return array ["12345", "67890"] 

Изменить: с ключевым словом RegExp-save

function getCodes(str, keyword) {
  keyword = keyword.replace(/([^a-zA-Z0-9 ])/g, '\\$1');
  return str.match(new RegExp('(?<=' + keyword + ').{5}', 'g'))
}
getCodes("My secret code is 12345 and his secret code is 67890", "secret code is ")
// will return array ["12345", "67890"] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...