first commit

This commit is contained in:
Patrick
2026-05-01 20:02:13 +02:00
commit 75fb753fc0
77 changed files with 4793 additions and 0 deletions
+29
View File
@@ -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 => ({'<':'&lt;','>':'&gt;','&':'&amp;'}[c]));
const safePattern = new RegExp(pattern, flags);
highlighted = input.replace(safePattern, m => `<span class="regex-match">${m.replace(/[<>&]/g, c => ({'<':'&lt;','>':'&gt;','&':'&amp;'}[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 = '';
}
}