这是我的输入字符串
'controls: ["aa.bb.cc","dd.ee.ff"],elements: []'
我想在控件中得到数据的结果:
"aa.bb.cc","dd.ee.ff"
我尝试了模式
/.*(controls:.*).*/
但我没有得到所有结果 我认为我的问题是新线
答案 0 :(得分:2)
您可以简单地将输入解析为JSON对象,然后遍历控件数组:
var input='controls: ["aa.bb.cc", "dd.ee.ff"],
elements: []';
json = JSON.parse(input);
var controls=json.controls;
//then loop throught the controls values
for(var i=0;i<controls.length;i++){
console.log(controls[i]);
}
我认为应该这样做。
答案 1 :(得分:2)
这可能看起来像一个非常粗糙的解决方案,但它确实有效。
此表达式将为您提供aa.bb.cc
:
var res = str.match(/controls: \[(.*)\]/)[1].match(/\"(.*)\",\"(.*)\"/)[1]
这将给出下一个元素,即dd.ee.ff
var res = str.match(/controls: \[(.*)\]/)[1].match(/\"(.*)\",\"(.*)\"/)[2]
一般来说,
var str = "controls: [\"aa.bb.cc\",\"dd.ee.ff\"],elements: []";
var resLength = str.match(/controls: \[(.*)\]/)[1].match(/\"(.*)\",\"(.*)\"/).length;
var res = str.match(/controls: \[(.*)\]/)[1].match(/\"(.*)\",\"(.*)\"/);
for (var i=1; i<resLength; i++) {
console.log(res[i]);
}
答案 2 :(得分:2)
您可以使用regEx
执行此操作var c = 'controls: ["aa.bb.cc", "dd.ee.ff"], elements: []';
var match = c.match(/("[a-z.]+")/g);
// or c.match(/([a-z][a-z][.][a-z][a-z][.][a-z][a-z])/);
// to strictly match letters . letters . letters
// or for a shorter match: c.match(/(\w+[.]\w+[.]\w+)/);
console.log(match); // an array of your values
编辑:
如果您只想获取控件中的值而不是元素,则可以使用regEx /controls: ([\["a-z., \]]+,)/g