使用正则表达式从对象中检索值 - JS [关闭]

Posted

技术标签:

【中文标题】使用正则表达式从对象中检索值 - JS [关闭]【英文标题】:Retrieving value from an object using regex - JS [closed] 【发布时间】:2022-01-21 21:52:36 【问题描述】:

是否可以通过键上的正则表达式从对象中提取值?

示例:

var map= "xxx_yyy":///some props;

var receiverId = "xxx";

var regex = new RegExp(`$receiverId_[^\\n]`);

我想要这样的东西:

map[regex]

亮点:

在构建地图对象时,我没有为重复的 xxx_ 提供选项(例如:如果我有 xxx_yyy,则不会发生 xxx_zzz - 所以正则表达式 xxx_[ANYTHING] 是唯一的) 我不想使用循环,因为那样我就失去了构建为一种哈希表的对象的效果。

【问题讨论】:

你试过了吗? 没有办法寻找部分键匹配,除了迭代。 @CinCout - 是的 - 不能那样工作 @CBroe 这正是我上传问题的原因 - 也许有人确实知道一种方法 @CBroe - 我们找到了方法 - 检查答案 【参考方案1】:
for (const [key, value] of Object.entries(map)) 
  if(regex.test(key))
  
      // key matches the regex: do whatever you would like
  

【讨论】:

【参考方案2】:

有效 - 我们将整个对象转换为 STRING 并通过正则表达式搜索其中的 KEY - 然后我们根据完整的 KEY 提取值(无循环:))

var map= "xxx_yyy":status:"a";
var receiverId = "xxx";
var regex = new RegExp(`"$receiverId_[^\\n]+?"`,"g");
var mapString = JSON.stringify(map);
var match = mapString.match(regex);
if(match[0])


    var key = match[0].replace(/"/g,"");
    var val = map[key];

【讨论】:

以上是关于使用正则表达式从对象中检索值 - JS [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

JS 正则表达式

如何使用正则表达式规则从 json 数据响应中检索值?

仅使用正则表达式从 long strong 中检索第 12 到第 14 个字符 - Grafana 变量

求正则表达式, 第一位大于0的正整数,直接可以在onkeyup事件中 使用的!

js 如何正则匹配多个,像php 的preg_match()

js之正则