// ═══════════════════════════════════════════════════════ // Regex Tester // ═══════════════════════════════════════════════════════ function testRegex() { const pattern = document.getElementById('regexPattern').value; const flags = document.getElementById('regexFlags').value; const input = document.getElementById('regexInput').value; const resEl = document.getElementById('regexResults'); const listEl = document.getElementById('regexMatchList'); if (!pattern || !input) { resEl.innerHTML = 'Enter a pattern and test string...'; listEl.innerHTML=''; return; } try { const re = new RegExp(pattern, flags); // Highlight matches let highlighted = input.replace(/[<>&]/g, c => ({'<':'<','>':'>','&':'&'}[c])); const safePattern = new RegExp(pattern, flags); highlighted = input.replace(safePattern, m => `${m.replace(/[<>&]/g, c => ({'<':'<','>':'>','&':'&'}[c]))}`); resEl.innerHTML = highlighted || 'No matches'; // Match list const matches = [...input.matchAll(new RegExp(pattern, flags.includes('g') ? flags : flags + 'g'))]; if (matches.length) { listEl.innerHTML = '
Matches (' + matches.length + ')
' + matches.map((m, i) => `
Match ${i+1}
${m[0]}
`).join(''); } else listEl.innerHTML = ''; } catch (e) { resEl.innerHTML = `${e.message}`; listEl.innerHTML = ''; } }