Javascript 正则表达式捕获字符串中的多个数组索引文本
对于某些人来说可能非常简单,但我想构建一个正则表达式来搜索这个字符串:Javascript 正则表达式捕获字符串中的多个数组索引文本,javascript,regex,Javascript,Regex,对于某些人来说可能非常简单,但我想构建一个正则表达式来搜索这个字符串: foo[0][2] 返回 foo 0 2 在匹配数组中 到目前为止,我已经想出了一个办法 \([a-z]*)(\[(\d)\])/g 这只会给你回报 0: "foo[0]" 1: "foo" 2: "[0]" 3: "0" 它不会重复到字符串中的下一个文本数组中,因此不会命中[2]部分 我不是regex忍者,如果能帮我找到正确的表达方式,我将不胜感激 谢谢我想你在寻找这个模式:([a-z]+)|(\[\d\]) c
foo[0][2]
返回
foo
0
2
在匹配数组中
到目前为止,我已经想出了一个办法
\([a-z]*)(\[(\d)\])/g
这只会给你回报
0: "foo[0]"
1: "foo"
2: "[0]"
3: "0"
它不会重复到字符串中的下一个文本数组中,因此不会命中[2]
部分
我不是regex忍者,如果能帮我找到正确的表达方式,我将不胜感激
谢谢我想你在寻找这个模式:
([a-z]+)|(\[\d\])
console.log('foo[0][2]”。匹配(/([a-z]+)|(\[\d\])/g)代码>我想您正在寻找这种模式:([a-z]+)|(\[\d\])
console.log('foo[0][2]”。匹配(/([a-z]+)|(\[\d\])/g)代码>如果您使用模式([a-z]*)(\[(\d)\])
,您可以使用while循环来获取第一个和第三个捕获组,但是请注意,使用[a-z]*
匹配0+次,也可以匹配[0][2]
中的部分
const regex=/([a-z]*)(\[(\d)\])/g;
const str=`foo[0][2]`;
让m;
让结果=[];
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
如果(m[1]!==“”)结果。推送(m[1]);
如果(m[3]!==“”)结果。推送(m[3]);
}
控制台日志(结果)代码>如果您使用模式([a-z]*)(\[(\d)\])
,您可以使用while循环来获取第一个和第三个捕获组,但是请注意,使用[a-z]*
匹配0+次,也可以匹配[0][2]
中的部分
const regex=/([a-z]*)(\[(\d)\])/g;
const str=`foo[0][2]`;
让m;
让结果=[];
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
如果(m[1]!==“”)结果。推送(m[1]);
如果(m[3]!==“”)结果。推送(m[3]);
}
控制台日志(结果)代码>