JavaScript 正则表达式 : capture property name after array index

标签 javascript regex

在 Javascript 中,有一个表示包含数组的对象属性路径的字符串,使用正则表达式捕获数组索引后的属性名称的最佳方法是什么?

有了这个:

'someArray[0].property.otherIgnorableProperties'

我有兴趣仅捕获“属性”部分,忽略“someArray[0]”部分以及“属性”之后的所有内容(包括点)。 “属性”部分可以有有限数量的可能的任意名称。

到目前为止我已经尝试过:

'someArray[0].property'.match(/^someArray\[\d\]\.property|someOtherPropertyName|otherName/g);

谢谢!

编辑:

以下 cars10m 答案是我想出的:

'someArray[0].field3.other'.match(/(?!someArray[\d+]\.)field1|field2|field3.*/g) 

但这会失败,因为对于 field3 它返回“field3.other”。对于 field1 和 field2 工作正常。只是为了澄清一下,我需要它返回匹配的段:field1、field2 或 field3。

最佳答案

这样就可以了:

let strings=['someArray[0].wantedprop1.otherIgnorableProperties',
             'dada[123].unwantedprop1.second.third',
             'X[91234].wantedprop2',
             'sameArray[94].wantedprop2.again',
             'sameArray[94].wantedprop2notwanted',
             'doNotTakeThis.wantedprop2.itIsNotAnArrayElement'
            ];
strings.forEach(str=>{
  let m=str.match(/.+\[\d+\]\.(wantedprop1|wantedprop2|anyotherwantedprop)(?!\w)/);
  let result=m&&m[1];
  console.log(result);
})

它返回第一个捕获组作为字符串的“唯一幸存内容”,但前提是整个模式匹配。

尚未检查数组的名称,但您可以使用以下正则表达式来执行此操作:

/someArray\[\d+\]\.(wantedprop1|wantedprop2)(?!\w)/

关于JavaScript 正则表达式 : capture property name after array index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62410431/

相关文章:

php - 如何获取javascript转换后的html源代码?

javascript - 如何停止/覆盖 Jquery TimeOut 函数?

regex - 如何在正则表达式中匹配包含特殊字符的整个单词

jquery - 使用 jQuery 或 RegEx 获取在样式表中写入的 CSS 值

javascript - 这两个函数作为箭头函数的语法是什么?

javascript在循环中向json对象添加值

javascript - 如何在我的 Viber 机器人中使用 bot.getUserDetails

Java - Oracle NUMBER(10,8) 字段的正则表达式

Java 正则表达式帮助 : capturing key-value pairs

javascript - 如果模式以标点符号开头或结尾,如何测试单词边界?