我正在尝试匹配标记和xml标记的可能属性。
在这里您可以找到示例: https://regex101.com/r/mZYvGU/1/
^([\S]+)(?:\s*([\S]+)="([^"]+)")*
测试字符串:
tag att1="1" att2="2"
问题是-它总是仅捕获最后一个属性。
感谢帮助。
答案 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);