正则表达式来匹配的字符串2个不同的词

问题描述 投票:0回答:3

我已经通过这个这么多的职位去,但无法找到一个工作。我有我想通过搜索,看看他们是否有以下两种特定的单词在其中,如果存在进行筛选对象键。

例:

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,因为这个词的流行或持久性有机污染物是在其中。

javascript regex
3个回答
0
投票

如果你想部分匹配可以使用/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)

0
投票

在这里,也有代码中的错误(语法)。

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
投票

在正则表达式中,元字符\b代表单词边界。从本质上讲,如果有(pop|pops)前的非文字字符只会匹配。下划线,然而,就是一个字字符。尝试:

const expr = /(\b|_)(pop|pops)\b/
© www.soinside.com 2019 - 2024. All rights reserved.