регулярное выражение для сопоставления 2 разных слов в строке - PullRequest
0 голосов
/ 09 февраля 2019

Я просмотрел так много сообщений об этом, но не могу найти тот, который работает.У меня есть ключи объектов, которые я хочу найти и посмотреть, есть ли в них одно из двух конкретных слов, и отфильтровать их, если они существуют.

Пример:

const obj = {
   time_pop: 'fhfvla',
   icon: 'dsfval',
   home_pops: 'valffg',
   title: 'sdfsdfs',
   pop: 'sfsdfsd',
   rattle: 'sdfdsf',
   pops: 'sfsdfsdf'
}

Я хочу регулярное выражениекоторый может найти либо слово поп ||выскакивает в ключах объекта.В настоящее время я перебираю ключ, и использую его в качестве своего регулярного выражения

  const expr = /\b(pop|pops)\b/;

  const only = Object.entries(obj).filter(([k, v]) => {
    return expr.test(k);
  })

. Вышеприведенное работает только для одного слова, если в нем нет _.Например, это не работает.time_pop home_pops

Они возвращают false, когда должны возвращать true, потому что в них есть слово pop или pops.

Ответы [ 3 ]

0 голосов
/ 09 февраля 2019

Здесь также были ошибки (синтаксис) в вашем коде.

const obj = {
  time_pop: 'fhfvla',
  icon: 'dsfval',
  home_pops: 'valffg',
  title: 'sdfsdfs',
  pop: 'sfsdfsd',
  rattle: 'sdfdsf',
  pops: 'sfsdfsdf'
};

const expr = /pop|pops/;

const only = Object.entries(obj).filter(([k, v]) => expr.test(k));

console.log(only);
0 голосов
/ 09 февраля 2019

В регулярном выражении метасимвол \b представляет границу слова.По сути, он будет совпадать только в том случае, если перед (pop|pops) есть символ, не состоящий из слов.Подчеркивание, однако, является символом слова.Попробуйте:

const expr = /(\b|_)(pop|pops)\b/
0 голосов
/ 09 февраля 2019

Вы можете использовать /pops?/, если хотите частично соответствовать.

const obj = {time_pop: 'fhfvla',icon: 'dsfval',home_pops: 'valffg',title: 'sdfsdfs',pop: 'sfsdfsd',rattle: 'sdfdsf',pops: 'sfsdfsdf'}

const only = Object.entries(obj).filter(([k, v]) => {
    return /pops?/g.test(k)
})


console.log(only)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...