正则表达式获取标签之间的每个字符

时间:2017-07-18 04:17:28

标签: javascript regex

apple man <span field="apply to|1232sdsdf_nsdnfnln|Data" contenteditable="false"> open the door.

在这里,我希望将字段属性与'apply to', '1232sdsdf_nsdnfnln', 'data'分开,并将其添加到另一个标记<data="apply to" value="1232sdsdf_nsdnfnln'">

这是我现在正在使用<span\s+(?:[^>]*?\s+)?field="([^"]*)"\scontenteditable="([^"]*)">的正则表达式,它将输出组1作为apply to|1232sdsdf_nsdnfnln|Data

1 个答案:

答案 0 :(得分:2)

所以只需拆分结果组:

var str = "apply to|1232sdsdf_nsdnfnln|Data";
var res = str.split("|");

console.log(res);
// Array [ "apply to", "1232sdsdf_nsdnfnln", "Data" ]

...或

var res = group1.split("|");

然后用它做任何你想做的事。

因此正则表达式可能如下所示:

const regex = /<span\s+(?:[^>]*?\s+)?field="([^"]*)"\scontenteditable="([^"]*)">/g;
const tag = `apple man <span field="apply to|1232sdsdf_nsdnfnln|Data" contenteditable="false"> open the door.`;
let m;

while ((m = regex.exec(tag)) !== null) {
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }

    m.forEach((match, groupIndex) => {
        if (groupIndex == 1) {
          var res = match.split("|");
          console.log(`<data="${res[0]}" value="${res[1]}">`);
        }
    });
}

<强>结果

<data="apply to" value="1232sdsdf_nsdnfnln">

<强>演示

https://jsfiddle.net/pheqfkwb/