gpt4 book ai didi

javascript - 使用正则表达式匹配字符串中的对象的对象属性

转载 作者:行者123 更新时间:2023-12-03 03:35:26 25 4
gpt4 key购买 nike

对于如下字符串:

`const someConst= {
name: 'someName',
someProp: {
somePropOfSomeProp: 'value'
}};`

我如何匹配 someProp 的值?

假设:

  • 属性名称始终已知someProp
  • 属性值始终是对象类型
  • someProp 对象不能有嵌套对象。它将是平坦的。

我正在使用 Javascript 正则表达式来解决这个问题。

为我们期望的 someProp 结构类型提供更多上下文。这基本上应该是 Angular 组件的绑定(bind)属性。因此预期值可能如下:

bindings: {
someBinding: '=',
someOtherBinding: '@'
}

或者绑定(bind)的属性可能不在同一行。所以它们可能是:

bindings: { someBinding: '=', someOtherBinding: '@' }

所以基本上我需要:

{
someBinding: '=',
someOtherBinding: '@'
}

最佳答案

要使用正则表达式来获取问题中的具体要求,您可以使用:

/(?!bindings\s*:\s*)(?:\{[^}]*\})/

Regex101 DEMO

它对属性名称和冒号使用负前瞻,以便它不包含在结果中。

但是,此正则表达式假定用于终止对象的字符之前根本不能有 } 字符。因此,如果该对象中的某个位置有一个包含 } 的字符串,它将中断。

在扩展讨论中,您还询问了如何获取完整对象。这更复杂,并且表明使用像 Esprima 这样的 JS 解析器很可能会是一个更好、更可靠的解决方案。

关于javascript - 使用正则表达式匹配字符串中的对象的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45885708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com