const regex = /([^\s=]+)=('?)("?)([^>"']*)\2\3/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('([^\\s=]+)=(\'?)("?)([^>"\']*)\\2\\3', 'g')
const str = ` style="width: 462px;" src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAg4AAALoCAYAAAAQpn2mAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dv4AACAASURBVHic7L15fNTVufj/PjOTyWSyTfaEJBD2EJBNQFQEtFVRXMD7VQG1dfu2tLW92t77unaxam+t9nbTXze9tW61Vdqvgre9FXcqUHFBFiUEkX0PgSQkmf1zzu+Pzz6ZhBBwg3l4kZn5fM7yPM8553me85znnAMZyEAGMpCBDGQgAxnIQAYykIEMZCADGchABjKQgQxkIAMZyEAGMpCBDGQgAxnIQAYykIEMZCADGchABjKQgQxkIAMZyEAGMpCBDGQgAxnIQAYykIEMZCADGchABjKQgQxkIAMZyEAGMpCBDGQgAxnIQAYykIEMZCADGchABjKQgQxkIAMZyEAGMpCBDGQgAxnIQAqIiy66SDXM/SW7DyUQgEIBAiFAKTOZQn8p7N/OQhB6PgFCgUI43ull6mmwyhUolFWJMB=' data-filename="Screenshot from 2016-02-09 21:54:47.png"
<tr><td><A HREF="brackets.html" TARGET="_top">Capturing group</A></td>
<td><TT>(regex)</TT></td>
<td>Parentheses group the regex between them. They capture the text matched by the regex inside them into a numbered group that can be reused with a numbered backreference. They allow you to apply regex operators to the entire grouped regex.</td>
<td><TT CLASS=code><SPAN CLASS="regexnest1">(</SPAN><SPAN CLASS="regexplain">abc</SPAN><SPAN CLASS="regexnest1">)</SPAN><SPAN CLASS="regexspecial">{3}</SPAN></TT> matches <TT CLASS=match>abcabcabc</TT>. First group matches <TT CLASS=match>abc</TT>.</td>
<td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>ECMA<br>extended<br>egrep<br>awk</td><td class=yes>YES</td><td>no</td><td class=yes>YES</td><td>no</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td><td class=yes>YES</td></tr>
<tr><td><A HREF="brackets.html" TARGET="_top">Capturing group</A></td>
<td><TT>\\(regex\\)</TT></td>
<td>Escaped parentheses group the regex between them. They capture the text matched by the regex inside them into a numbered group that can be reused with a numbered backreference. They allow you to apply regex operators to the entire grouped regex.</td>
<td><TT CLASS=code><SPAN CLASS="regexnest1">\\(</SPAN><SPAN CLASS="regexplain">abc</SPAN><SPAN CLASS="regexnest1">\\)</SPAN><SPAN CLASS="regexplain">{3}</SPAN></TT> matches <TT CLASS=match>abcabcabc</TT>. First group matches <TT CLASS=match>abc</TT>.</td>
<td>no</td><td>no</td><td>no</td><td>no</td><td>no</td><td>no</td><td>no</td><td>no</td><td>no</td><td>no</td><td>no</td><td>no</td><td>no</td><td>no</td><td class=yes>basic<br>grep</td><td>no</td><td class=yes>YES</td><td>no</td><td class=yes>YES</td><td>no</td><td>no</td><td>no</td><td>no</td></tr>
<tr><td><A HREF="brackets.html" TARGET="_top">Non-capturing group</A></td>
`;
// 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