正则表达式(重复组)似乎不起作用

时间:2018-10-23 10:35:52

标签: regex

我正在尝试匹配标记和xml标记的可能属性。

在这里您可以找到示例: https://regex101.com/r/mZYvGU/1/

^([\S]+)(?:\s*([\S]+)="([^"]+)")*

测试字符串:

  

tag att1="1" att2="2"

问题是-它总是仅捕获最后一个属性。

感谢帮助。

1 个答案:

答案 0 :(得分:0)

您可以按照我的示例进行操作:

let s = `tag att1="1" att2="2" att3="34"`;
let regex = /(.*?)(?<=\s)(\w+)="(\w+)"/ig;
let result = [];
s.replace(regex, function(match,tag,att_name,att_value){
    if(tag.trim()!==''){
        result.push(tag.trim());
        result.push(att_name); //att1
        result.push(att_value); //1
    }else{
        result.push(att_name); //att2 and att3
        result.push(att_value); //2 and 34
    };
});
console.log(result);