const regex = new RegExp('<tr class=\\'(.)\\'><td class=\\'TR(.)\\'><a href=\\'http://www\\.openstreetmap\\.org\\/\\?mlon=([-\\d\\.]+)&mlat=([-\\d\\.]+)&zoom=\\d+\\' target=\\'_blank\\'><img src=\\'img\\/flags\\/(\\w+)\\.gif\\' class=\\'flag\\' width=\\'\\d+px\\' title=\\'(.+)\\' alt=\\'\\w+\\' border=\\'0\\'><\\/a> <a href=\\'router_detail\\.php\\?FP=([a-zA-Z0-9]+)\\' target=\\'_blank\\'>([^\\<]+)<\\/a><\\/td><td class=\\'TDb\\'><table cellspacing=\\'0\\' cellpadding=\\'0\\' class=\\'bwb\\'><tr title=\\'([^\\']+)\\'><td class=\\'bwr.?\\'><img src=\\'img/bar/\\d+.png\\' width=\\'\\d+px\\' height=\\'15px\\' alt=\\'\\d+\\'></td><td> <small> \\d+</small></td></tr></table></td><td class=\\'TDc.?\\'>([^<]+)</td><td class=\\'TDS\\'><table class=\\'iT\\'><tr><td class=\\'iT\\'>([^\\[]+)\\[<a class=\\'who\\' href=\\'/cgi\\-bin/whois.pl\\?ip=[\\d\\.]+\\' target=\\'_blank\\'>([\\d\\.]+)</a>\\]</td>(<td><img src=\\'img/status/Fast.png\\' title=\\'Fast Server\\' alt=\\'Fast Server\\'></td>)?(<td><img src=\\'img/status/Exit.png\\' title=\\'Exit Server\\' alt=\\'Exit Server\\'></td>)?(<td><img src=\\'img/status/Dir.png\\' title=\\'Directory Server\\' alt=\\'Directory Server\\'></td>)?(<td><img src=\\'img/status/Guard.png\\' title=\\'Guard Server\\' alt=\\'Guard Server\\'></td>)?(<td><img src=\\'img/status/Stable.png\\' title=\\'Stable Server\\' alt=\\'Stable Server\\'></td>)?(<td><img src=\\'img/status/Authority.png\\' title=\\'Authority Server\\' alt=\\'Authority Server\\'/></td>)?<td><img src=\\'[^\\']+\\' title=\\'([^\\']+)\\' alt=\\'[^\\']+\\'></td>(<td><img src=\\'[^\\']+\\' title=\\'([^\\']*)\\' alt=\\'[^\\']*\\'></td>)?</tr></table></td><td class=\\'TDc\\'>(<b>)?(\\d*)(</b>)?</td><td class=\\'TDc\\'>(<b>)?([None\\d]*)(</b>)?</td><td class=\\'(F\\d)\\'></td></tr>', 'g')
const str = `<tr class='r'><td class='TRR'><a href='http://www.openstreetmap.org/?mlon=-0.1300&mlat=51.5000&zoom=6' target='_blank'><img src='img/flags/gb.gif' class='flag' width='18px' title='//GB' alt='GB' border='0'></a> <a href='router_detail.php?FP=dc358f29426fb682f96f37fb4f3538edbb94b3d4' target='_blank'>czu5kXA8zLE0</a></td><td class='TDb'><table cellspacing='0' cellpadding='0' class='bwb'><tr title='817 KBs'><td class='bwr'><img src='img/bar/1.png' width='69px' height='15px' alt='817'></td><td> <small> 817</small></td></tr></table></td><td class='TDcb'>3 d</td><td class='TDS'><table class='iT'><tr><td class='iT'>212.38.166.231 [<a class='who' href='/cgi-bin/whois.pl?ip=212.38.166.231' target='_blank'>212.38.166.231</a>]</td><td><img src='img/status/Fast.png' title='Fast Server' alt='Fast Server'></td><td><img src='img/status/Exit.png' title='Exit Server' alt='Exit Server'></td><td><img src='img/status/Dir.png' title='Directory Server' alt='Directory Server'></td><td><img src='img/status/Guard.png' title='Guard Server' alt='Guard Server'></td><td><img src='img/status/Stable.png' title='Stable Server' alt='Stable Server'></td><td><img src='img/os-icons/Linux.png' title='Tor 0.2.4.22 on Linux' alt='Tor 0.2.4.22 on Linux'></td></tr></table></td><td class='TDc'>9001</td><td class='TDc'>9030</td><td class='F0'></td></tr>
<tr class='r'><td class='TRr'><a href='http://www.openstreetmap.org/?mlon=-93.3084&mlat=37.2999&zoom=6' target='_blank'><img src='img/flags/us.gif' class='flag' width='18px' title='Springfield/Missouri/US' alt='US' border='0'></a> <a href='router_detail.php?FP=643b8a73713e2e948c5e3359d5bf5e4c8249aee2' target='_blank'>d00dstor</a></td><td class='TDb'><table cellspacing='0' cellpadding='0' class='bwb'><tr title='2 KBs'><td class='bwr'><img src='img/bar/1.png' width='1px' height='15px' alt='2'></td><td> <small> 2</small></td></tr></table></td><td class='TDc'>13 h</td><td class='TDS'><table class='iT'><tr><td class='iT'>173-18-211-201.client.mchsi.com [<a class='who' href='/cgi-bin/whois.pl?ip=173.18.211.201' target='_blank'>173.18.211.201</a>]</td><td><img src='img/status/Dir.png' title='Directory Server' alt='Directory Server'></td><td><img src='img/os-icons/Linux.png' title='Tor 0.2.4.22 on Linux' alt='Tor 0.2.4.22 on Linux'></td></tr></table></td><td class='TDc'>9001</td><td class='TDc'>9030</td><td class='F0'></td></tr>
<tr class='r'><td class='TRr'><a href='http://www.openstreetmap.org/?mlon=15.5000&mlat=49.7500&zoom=6' target='_blank'><img src='img/flags/cz.gif' class='flag' width='18px' title='//CZ' alt='CZ' border='0'></a> <a href='router_detail.php?FP=fb2b4193f34aaa980d0e8c6ec2aa71417525f4b5' target='_blank'>d1n</a></td><td class='TDb'><table cellspacing='0' cellpadding='0' class='bwb'><tr title='1780 KBs'><td class='bwr1'><img src='img/bar/2.png' width='66px' height='15px' alt='1780'></td><td> <small> 1780</small></td></tr></table></td><td class='TDcb'>2 d</td><td class='TDS'><table class='iT'><tr><td class='iT'>185.8.237.27 [<a class='who' href='/cgi-bin/whois.pl?ip=185.8.237.27' target='_blank'>185.8.237.27</a>]</td><td><img src='img/status/Fast.png' title='Fast Server' alt='Fast Server'></td><td><img src='img/status/Dir.png' title='Directory Server' alt='Directory Server'></td><td><img src='img/status/Guard.png' title='Guard Server' alt='Guard Server'></td><td><img src='img/status/Stable.png' title='Stable Server' alt='Stable Server'></td><td><img src='img/os-icons/Linux.png' title='Tor 0.2.4.22 on Linux' alt='Tor 0.2.4.22 on Linux'></td></tr></table></td><td class='TDc'>9001</td><td class='TDc'>9030</td><td class='F0'></td></tr>
<tr class='r'><td class='TRR'><a href='http://www.openstreetmap.org/?mlon=4.9167&mlat=52.3500&zoom=6' target='_blank'><img src='img/flags/nl.gif' class='flag' width='18px' title='Amsterdam/Noord-Holland/NL' alt='NL' border='0'></a> <a href='router_detail.php?FP=6ef897645b79b6cb35e853b32506375014de3621' target='_blank'>d6relay</a></td><td class='TDb'><table cellspacing='0' cellpadding='0' class='bwb'><tr title='383 KBs'><td class='bwr'><img src='img/bar/1.png' width='32px' height='15px' alt='383'></td><td> <small> 383</small></td></tr></table></td><td class='TDcb'>22 d</td><td class='TDS'><table class='iT'><tr><td class='iT'>charles.d6.nl [<a class='who' href='/cgi-bin/whois.pl?ip=82.161.239.177' target='_blank'>82.161.239.177</a>]</td><td><img src='img/status/Fast.png' title='Fast Server' alt='Fast Server'></td><td><img src='img/status/Dir.png' title='Directory Server' alt='Directory Server'></td><td><img src='img/status/Guard.png' title='Guard Server' alt='Guard Server'></td><td><img src='img/status/Stable.png' title='Stable Server' alt='Stable Server'></td><td><img src='img/os-icons/Linux.png' title='Tor 0.2.4.22 on Linux' alt='Tor 0.2.4.22 on Linux'></td></tr></table></td><td class='TDc'>110</td><td class='TDc'><b>80</b></td><td class='F0'></td></tr>
`;
// 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