const regex = new RegExp('(\\S+)\\s*=\\s*([\\']|[\\"])([\\W\\w]*?)\\2', 'g')
const str = `<div title="You're" data-type=' She said "ok" '>Hello</div>
<div class=" e ">Hello</div>
<div class=" e ">Hello</div>
<div class=" e fg h ">Hello</div>
<div class=" e fg h ">Hello</div>
<div class="e">Hello</div>
<div class="e fg h">Hello</div>
<div class="e fg h">Hello</div>
<div data-type="!#\$%)?¡]><[;:_}{-.,">Hello</div>
<div data-type="!#\$%&()*+,-./:;?@[\\]^_\`{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ">Hello</div>
<div id="a" class='b'>Hello</div>
<div data-type=" c " title = "d">Hello</div>
<div data-type="!#\$%)?¡][;:_}{-.,">Hello</div>
<div id="a" class='b'>H</div><div id='1' class="2">W</div>
<div id="a" class="b" title="cd" data-1=".javascript(this)" style="">Hello</div>
<div id='a' class='b' title='cd' data-1='javascript(this.tile)' style=''>Hello</div>
<div id="Mine" class="red header big-font" data-type=" header " title = "a_b">Hello</div><article id="hello" class="should-not-capture">world</article>
<div id='Mine' class='red header big-font' data-type=' header ' title = 'a_b'>Hello</div><article id='hello' class='should-not-capture'>world</article>
`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions