簡體   English   中英

正則表達式匹配字符串中的2個不同的單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM