Назад Зміст


Підсвітка тексту за кнопками



const patterns = {
  date: /\b\d{1,2}[./-]\d{1,2}[./-]\d{2,4}\b/g,
  phone: /\+?\d[\d\s\-\(\)]{7,}\d/g,
  url: /https?:\/\/[^\s]+/g,
  number: /\b\d+\b/g,
  capital: /(^|[^А-Яа-яЁёЇїІіЄєҐґA-Za-z0-9_])([A-ZА-ЯЁЇІЄҐ][a-zа-яёіїєґA-Za-z]*)(?=[^А-Яа-яЁёЇїІіЄєҐґA-Za-z0-9_]|$)/g
};

const classes = {
  date: 'highlight-date',
  phone: 'highlight-phone',
  url: 'highlight-url',
  number: 'highlight-number',
  capital: 'highlight-capital'
};

let originalText = document.getElementById("inputText").value;

function escapeHtml(text) {
  return text.replace(/[&<>]/g, tag => ({ "&": "&", "<": "<", ">": ">" }[tag]));
}

function highlight(type) {
  let text = escapeHtml(document.getElementById("inputText").value);
  let regex = patterns[type];
  let cls = classes[type];

  // Для capital зберігаємо групу p2
  if(type === 'capital'){
    text = text.replace(regex, (match, p1, p2) => {
      return p1 + '<span class="'+cls+'">'+p2+'</span>';
    });
  } else {
    text = text.replace(regex, (match) => `<span class="${cls}">${match}</span>`);
  }

  document.getElementById("output").innerHTML = text;
}

function resetText() {
  document.getElementById("inputText").value = originalText;
  document.getElementById("output").innerHTML = escapeHtml(originalText);
}

// Завантаження тексту з файлу
document.getElementById("fileInput").addEventListener("change", function(event) {
  const file = event.target.files[0];
  if (!file) return;
  const reader = new FileReader();
  reader.onload = function(e) {
    const content = e.target.result;
    document.getElementById("inputText").value = content;
    originalText = content;
    document.getElementById("output").innerHTML = escapeHtml(content);
  };
  reader.readAsText(file, "UTF-8");
});

// Відобразити текст спочатку без підсвітки
window.onload = function() {
  document.getElementById("output").innerHTML = escapeHtml(originalText);
};



Назад Зміст