如何获得多行的价值

时间:2015-01-19 10:22:25

标签: javascript regex

 var imput =         function({
                            a: "val",
                            b: "${version}",
                            c: ["c"],
                            d: [],
                            e: [],
                            controls: ["con1,"con2",
                             "con3"
                            ],
                            elements: []
            });

我想获得控件“con1,con2.con3”的值 我试过这种模式

 .*controls.*\[(.*)\]

当所有控件都在一行时它起作用 如果值是在分开的行中,我该怎么做?

2 个答案:

答案 0 :(得分:1)

.表示除换行符之外的任何字符。通常,您必须激活s单行)选项才能使其达到您想要的效果,但这在JS中不可用。

解决方法是将.替换为类似[\s\S]的内容,这意味着:任何字符都是空格,或者不是空格,这是相同的as 任何角色

最终结果(略有改进):

controls\s*:\s*\[([\s\S]*?)\]

请注意,我使用了一个不合理的量词,以便一旦遇到],模式就会停止。

你甚至可以做到这一点:

controls\s*:\s*\[([^\]]*)\]

[^\]]表示] 以外的任何字符。

答案 1 :(得分:1)

试试这个:

controls\s*:\s*\[([\s\S]*?)\]

Regular expression visualization

Demo