使用JavaScript在给定的两个字符内获取字符串

时间:2016-06-01 15:30:52

标签: javascript arrays regex

有没有办法使用JavaScript将括号< >中的每个值推送到数组?

举个例子:

<And><Or><And><Eq><FieldRef Name="Editor" /><Value Type="User">XXX</Value></Eq><Eq><FieldRef Name="Document_x0020_Type" /><Value Type="Text">Audit</Value></Eq></And><Eq><FieldRef Name="Base_x0020_Content" /><Value Type="Text">Document</Value>

输出应为:

Array = ["And", "or", "And", "Eq", "FieldRef Name="Editor" /",.........]

2 个答案:

答案 0 :(得分:0)

当然有,使用正则表达式 /<([^>]+)>/g 并获取捕获的组值。使用 RegExp.prototype.exec() 方法使用正则表达式获取捕获的值。

var str = '<And><Or><And><Eq><FieldRef Name="Editor" /><Value Type="User">XXX</Value></Eq><Eq><FieldRef Name="Document_x0020_Type" /><Value Type="Text">Audit</Value></Eq></And><Eq><FieldRef Name="Base_x0020_Content" /><Value Type="Text">Document</Value>';

var res = [],
  m,
  reg = /<([^>]+)>/g;

while (m = reg.exec(str))
  res.push(m[1])

console.log(res);

Regex explanation here.

Regular expression visualization

答案 1 :(得分:0)

当然......让我们做吧

&#13;
&#13;
var str = '<And><Or><And><Eq><FieldRef Name="Editor" /><Value Type="User">XXX</Value></Eq><Eq><FieldRef Name="Document_x0020_Type" /><Value Type="Text">Audit</Value></Eq></And><Eq><FieldRef Name="Base_x0020_Content" /><Value Type="Text">Document</Value>',
    reg = /[^><]+/g,
    arr = str.match(reg);
console.log(arr);
&#13;
&#13;
&#13;