Javascript 匹配方括号中的数字并获取剩余字符串

Javascript 匹配方括号中的数字并获取剩余字符串,javascript,regex,Javascript,Regex,我有一根像下面这样的线 value[0] 我想检查字符串是否包含方括号 如果是,则获取在上述情况下为0 获取不带括号和数字的字符串的其余部分,在上述情况下为value 如何实现第三点?您需要删除包装引号,并避开括号 此外,还可以使用另一个catch组来获取字符串。第一个捕捉组应与任何非括号的对象匹配。如果找不到匹配项,请使用回退数组,并使用destructuring获取字符串和数字。如果字符串/数字未定义则不匹配 var key='value[0]'; var[,str,number]=ke

我有一根像下面这样的线

value[0]
  • 我想检查字符串是否包含方括号
  • 如果是,则获取在上述情况下为
    0
  • 获取不带括号和数字的字符串的其余部分,在上述情况下为
    value

  • 如何实现第三点?

    您需要删除包装引号,并避开括号

    此外,还可以使用另一个catch组来获取字符串。第一个捕捉组应与任何非括号的对象匹配。如果找不到匹配项,请使用回退数组,并使用destructuring获取字符串和数字。如果字符串/数字
    未定义
    则不匹配

    var key='value[0]';
    var[,str,number]=key.match(/([^\[]+)\[([0-9]+)\]/)|【】;
    
    log({str,number});
    使用另一个捕获组获取方括号之前的字符串部分

    此外,不应引用regexp

    var key='value[0]'
    var matches=key.match(/(\w+)\[([0-9]+)\]/);
    如果(null!=匹配项){
    var变量=匹配项[1];
    var num=匹配项[2];
    }
    
    console.log(`variable=${variable},index=${num}`);
    您需要转义方括号。您清楚地知道方括号有特殊的含义,因为您编写了专门使用它们的
    [0-9]
    。这还不太清楚:1)方括号中可以有多个数字吗?2)那么预期的结果是什么/[([0-9]+)]/'定义正则表达式的方法在PHP中有效,而在JS中无效,
    [
    ]
    是特殊的,因此在需要匹配文字括号时需要转义。
    var matches = this.key.match('/[([0-9]+)]/');  // 1 
    if (null != matches) {
        var num = matches[1]; // 2
    }