javascript中的regexp:在string中查找对象并从找到的对象中获取元素

时间:2016-10-06 13:40:14

标签: javascript arrays regex search substring

我在输入字符串中找到字符串并从找到的字符串中获取子字符串:

我输入了字符串:

<ipc:infoblock title = 'my title'>\
    <ipc:form:period        />\
    <ipc:form:time-scale    />\
    <ipc:form:hq            />\
    <ipc:form:regions       />\
    <ipc:form:apply         />\
</ipc:infoblock>\

我想在表格中得到一个结果:

[{'<ipc:form:period         />', 'ipc:form:period'}, 
{{'<ipc:form:time-scale     />', 'ipc:form:time-scale'}, 
..., 
{'<ipc:form:apply           />', 'ipc:form:apply'}]

我的javascript代码:

var res = inputString.match(/<ipc:form:([^\s]+)\s+\/>/gi);

结果:

0: "<ipc:form:period        />"
1: "<ipc:form:time-scale    />"
2: "<ipc:form:hq            />"
3: "<ipc:form:regions       />"
4: "<ipc:form:apply         />"

但如何获取上述数组,包含子串和元素子串(多维数组)的结果?

我不想在找到的字符串上使用其他搜索!

1 个答案:

答案 0 :(得分:0)

看起来/global/g正则表达式总是会丢弃捕获组。

如果您可以访问ES2015环境,可以尝试的一件事是粘滞的正则表达式标记:

const re = /(a)[bc]/y
'abac'.match(re) // => ["ab", "a"]
'abac'.match(re) // => ["ac", "a"]
'abac'.match(re) // => null

否则,您将不得不对结果字符串进行第二次搜索。