javascript - 尝试使用正则表达式匹配字符串中的数组索引模式

标签 javascript regex string match

我使用正则表达式来获取变量访问模式表示为字符串的索引,例如:

string = "test[2][56].var1[4]"

捕获组 2、56、4 中的正则表达式匹配结果。

matchGroups = ["2", "56", "4"]

下面的正则表达式有效。

\[([^\.\]]+)\]

但我不能允许这样的情况:

“测试。[3].var1” 或者 “测试[3]/”

我尝试使用下面的正则表达式来限制每个组之前和之后允许的字符:

[\]a-zA-Z0-9]\[([^\.\]]+)\]([\[a-zA-Z0-9])?

但有些情况停止工作,例如“test[0].var7[3][4]”(4未捕获)。

我需要帮助才能再次适用于所有案例(案例位于下面的链接中)。

https://regex101.com/r/mOgOHn/2

最佳答案

我会替换字符串,然后匹配

替换正则表达式:

/.*?\[(\d+)\].*?/

替换字符串,其中括号之间的任何数字都替换为后跟 ,的数字

匹配正则表达式:

/\d+(?=,)/

积极向前看;哪个 查找后跟 ,

的任何数字

const captureNumber = str => str.replace(/.*?\[(\d+)\].*?/g, "$1,").match(/\d+(?=,)/g)

console.log(captureNumber("test[0].var7[3][4]")); //[ "0", "3", "4" ]
console.log(captureNumber("test[3]/")); //[ "3" ] 
console.log(captureNumber("test.[3].var1")); //[ "3" ] 
console.log(captureNumber("test[2][56].var1[4]")); //[ "2", "56", "4" ]

关于javascript - 尝试使用正则表达式匹配字符串中的数组索引模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73187821/

相关文章:

javascript - session 未定义 - 使用 Connect-Redis/ExpressJS/Node

java 正则表达式 : capitalize words with certain number of characters

java - 一个正则表达式可以(有效地)统治所有这些?

c - 在 C 中创建字符串的不同方法

javascript - 等待功能完成后再开始

javascript - 如果 class true 将 url 添加到 iframe 并处理 url 列表,然后重复?

java - 在 Java 中通过字符串传递引用

c++ - 为什么 "\?"是 C/C++ 中的转义序列?

javascript - 无法为 php 日期框赋值

java - 无法匹配我的正则表达式