first commit
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
// ═══════════════════════════════════════════════════════
|
||||
// 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 = '<span style="color:var(--text-muted)">Enter a pattern and test string...</span>'; 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 => `<span class="regex-match">${m.replace(/[<>&]/g, c => ({'<':'<','>':'>','&':'&'}[c]))}</span>`);
|
||||
resEl.innerHTML = highlighted || '<span style="color:var(--text-muted)">No matches</span>';
|
||||
// Match list
|
||||
const matches = [...input.matchAll(new RegExp(pattern, flags.includes('g') ? flags : flags + 'g'))];
|
||||
if (matches.length) {
|
||||
listEl.innerHTML = '<div class="panel-label">Matches (' + matches.length + ')</div>' +
|
||||
matches.map((m, i) => `<div class="result-row"><div class="label">Match ${i+1}</div><div class="value" onclick="copyText(this.textContent)">${m[0]}</div></div>`).join('');
|
||||
} else listEl.innerHTML = '';
|
||||
} catch (e) {
|
||||
resEl.innerHTML = `<span style="color:var(--red)">${e.message}</span>`;
|
||||
listEl.innerHTML = '';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user