如何从第二组括号中获取字符串

时间:2016-06-28 14:02:35

标签: javascript regex

我有一个字符串:

  

服务[定制] [mainData]

如何获取字符串mainData

我试过了:

var result = id.match('\[(.*?)\]');
alert(result[1]);

var result = id.match(\[(.*?)\]);
alert(result[1]);

无济于事。对于我来说,使用一组括号非常简单,第二组就是让我失望的原因。

5 个答案:

答案 0 :(得分:2)

如果字符串总是采用那种格式,那么你真的不需要复杂的正则表达式,你可以在][上拆分并取出剩余的字符串,而不是最后的]。类似的东西:

id.split('][').pop().slice(0, -1);

以下是每个步骤的注释代码:

var id = 'services[custom][mainData]';

var result = id.split('][')  // split on `][` gives [ 'services[custom', 'mainData]' ]
  .pop()                     // take the last match gives 'mainData]'
  .slice(0, -1);             // trim the last char gives 'mainData'

console.log(result);         // logs 'mainData'

答案 1 :(得分:2)

您可以在匹配.*[之前使用贪婪的],以确保始终匹配上次[...]

var str = 'services[custom][mainData]';
var result = str.match(/.*\[([^\]\[]*)\]/)[1];

console.log(result); //mainData

RegEx Demo

答案 2 :(得分:0)

如果要提取第二对括号,只需匹配第一对括号。

var result = id.match(/\[(.*?)\]\[(.*?)\]/);

idservices[custom][mainData]的示例,result[1]现在为customresult[2]mainData

答案 3 :(得分:0)

这个regex应该为你做,只要你抓住了正确的群体!

答案 4 :(得分:0)

这有效:

var test = "services[custom][mainData]";
var re   = /\[(\w+)\]\[(\w+)\]/g;
var res  = re.exec(test);
document.write(res[2]);