2016-06-28 40 views
2

的字符串我有一个字符串:如何从第二组括号

服务[自定义] [mainData]

我怎样才能得到字符串mainData

我曾尝试:

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

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

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

+0

是串总是在格式? – nem035

+0

如果它总是你想要的最后一个,只需'/ \ [([^ \]] *)\] $ /'应该为你做。 – ClasG

回答

0

当您想要提取第二对括号时,只需匹配第一对括号即可。

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

与您idservices[custom][mainData]的例子,现在result[1]customresult[2]mainData

0

regex应该为你做,只要你抓住了正确的组合!

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'

2

您可以使用一个贪婪.*匹配[]之前,确保你总是匹配最后[...]

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

 
console.log(result); //mainData

RegEx Demo

0

这工作:

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