我有一个字符串:
服务[定制] [mainData]
如何获取字符串mainData
?
我试过了:
var result = id.match('\[(.*?)\]');
alert(result[1]);
var result = id.match(\[(.*?)\]);
alert(result[1]);
无济于事。对于我来说,使用一组括号非常简单,第二组就是让我失望的原因。
答案 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
答案 2 :(得分:0)
如果要提取第二对括号,只需匹配第一对括号。
var result = id.match(/\[(.*?)\]\[(.*?)\]/);
以id
为services[custom][mainData]
的示例,result[1]
现在为custom
,result[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]);