[英]regex to match 2 different words in a string
我已經瀏覽了很多關於此的文章,但找不到有效的文章。 我有要搜索的對象鍵,看看它們中是否有兩個特定的單詞中的一個,如果存在,則對其進行過濾。
例:
const obj = {
time_pop: 'fhfvla',
icon: 'dsfval',
home_pops: 'valffg',
title: 'sdfsdfs',
pop: 'sfsdfsd',
rattle: 'sdfdsf',
pops: 'sfsdfsdf'
}
我想要一個可以找到單詞pop ||的正則表達式 彈出對象鍵。 我目前正在遍歷並擁有密鑰,並將其用作我的正則表達式
const expr = /\b(pop|pops)\b/;
const only = Object.entries(obj).filter(([k, v]) => {
return expr.test(k);
})
以上僅適用於一個單詞,如果其中包含_則不行。 例如,這不起作用。 time_pop home_pops
當它們應該返回true時,它們將返回false,因為其中包含單詞pop或pops。
如果要部分匹配,可以使用/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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.