代码之家  ›  专栏  ›  技术社区  ›  Hex

如何从方括号[]中包含值的字符串中获取值?

  •  1
  • Hex  · 技术社区  · 6 年前

    我有一个这样的字符串:“[value1][value2]”

    注意:如果字符串像这样“[][value2]”,第一个有空格的括号必须向我返回一个“”。。。

    这是我最后一次尝试:

    var pattern = /[([^]]*)]/g; 
    var res = pattern.exec(datos[0].title); 
    

    我试过的另一个方法是:

    var res = datos[0].title.match(/^.*?[([^]]*)].*?[([^]]*)]/gm);
    

    5 回复  |  直到 6 年前
        1
  •  2
  •   cybersam    6 年前

    正如@HarryCutts所说,您不需要regex:

    var x = "[value1][value2]";
    console.log( x.slice(1,-1).split('][') );
        2
  •  0
  •   Sushanth --    6 年前

    您可以尝试这个正则表达式和暴力方式来提取内容。

    var regex = /\[(.*?)\]/g;
    
    var value = "[value1][value2][]";
    
    var matches = value.match(regex);
    
    var matchedValues = matches.map(match => {
    	return match.replace("[", "").replace("]", "");
    }).join(" ");
    
    console.log(matchedValues.toString())
        3
  •  0
  •   Jack Bashford    6 年前

    你可以这样做:

    var str = "['value1']['value2']";
    var value1 = str.split("]")[0].split("[")[1];
    var value2 = str.split("]")[1].split("[")[1];
    console.log(str);
    console.log(value1);
    console.log(value2);
        4
  •  0
  •   ams    6 年前

    您可以轻松地扩展它以获得更多值。

    const string = "[value1][value2]";
    
    const removeBrackets = (stringWithBrackets) => {
      return stringWithBrackets.split("][").map(s => s = s.replace(/\[*\]*/g, ""));
    };
    
    const [value1, value2] = removeBrackets(string);
    
    console.log(value1, value2);
        5
  •  0
  •   Fernando Matos    6 年前
    const getItems = (fullItemsString) => {
        let items = fullItemsString.replace(/\[/g, "").split("]");
        items.pop()
    
        return items;
    }
    

    使用:

    let items = getItems("[2][][34][1]");
    

    结果:['2','','34','1']