如何用空格在正则表达式中获取字符串

时间:2015-01-19 09:09:43

标签: javascript

这是我的输入字符串

'controls: ["aa.bb.cc","dd.ee.ff"],elements: []'

我想在控件中得到数据的结果:

    "aa.bb.cc","dd.ee.ff"

我尝试了模式

     /.*(controls:.*).*/

但我没有得到所有结果 我认为我的问题是新线

3 个答案:

答案 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

获取控件值