我使用正则表达式来获取变量访问模式表示为字符串的索引,例如:
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未捕获)。
我需要帮助才能再次适用于所有案例(案例位于下面的链接中)。
最佳答案
我会替换
字符串,然后匹配
替换正则表达式:
/.*?\[(\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/