我已经通过这个这么多的职位去,但无法找到一个工作。我有我想通过搜索,看看他们是否有以下两种特定的单词在其中,如果存在进行筛选对象键。
例:
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,因为这个词的流行或持久性有机污染物是在其中。
如果你想部分匹配可以使用/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)
在这里,也有代码中的错误(语法)。
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);
在正则表达式中,元字符\b
代表单词边界。从本质上讲,如果有(pop|pops)
前的非文字字符只会匹配。下划线,然而,就是一个字字符。尝试:
const expr = /(\b|_)(pop|pops)\b/