Я работаю над пользовательской CMS и хочу иметь возможность выбирать раздел HTML, отображаемый для редактирования в текстовом поле, и заменять любые закрывающие теги другим тегом. Например, я могу выбрать элемент абзаца и превратить его в h3 одним щелчком мыши, оставив любые другие теги нетронутыми.Удалить теги html из выделения в textarea
Я реализовал rangyinputs чтобы операции GetSelection/replaceSelectedText на прокручиваемым, и до сих пор у меня есть это:
function add_html_tag(target_ID, replace_tag) {
$(target_ID).focus();
$(target_ID).replaceSelectedText('<' + replace_tag + '>' + $(target_ID).getSelection().text.replace(/(<([^>]+)>)/ig,"") + '</' + replace_tag + '>');
}
Это хорошо работает, но он удаляет все теги из целевого текста, а не только ограждающие те, так любые другие теги в выбранном тексте также будут удалены.
Любые идеи, я думаю, что это просто связано с изменением регулярного выражения в выражении replace. Поскольку textarea содержит только обычный текст, я не могу использовать методы jQuery, такие как распаковка. Очевидно, что выполнение регулярных операций, подобных этому на HTML, является подверженным ошибкам, но на данный момент я предполагаю, что пользователи правильно выбирают текст!
Возможно, вы не должны использовать Regex для анализа HTML. См. Этот пост [здесь] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags?rq=1). – Walls