Получите все возникновение группы
let m=[], s = "something format_abc format_def format_ghi";
s.replace(/(?:^|\s)format_(.*?)(?:\s|$)/g, (x,y)=> m.push(y));
console.log(m);
Вы получаете текст и заменяете им диапазон:
var wrap = $('.highlight');
var text = wrap.text();
wrap.replaceWith(text);
оберните его в плагин
(function($) {
$.fn.tagRemover = function() {
return this.each(function() {
var $this = $(this);
var text = $this.text();
$this.replaceWith(text);
});
}
})(jQuery);
, а затем используйте вот так
$('div span').tagRemover();
Working Demo здесь - добавьте / edit к URL-адресу, чтобы поиграть с кодом
Это работает:
wrap = $('.highlight');
wrap.before(wrap.text());
wrap.remove();
Это сделает то, что вы хотите, а также сохранит все теги в диапазоне .highlight.
content = $(".highlight").contents();
$(".highlight").replaceWith(content);
было бы намного проще просто изменить класс диапазона, чем фактически удалить его. Вы можете использовать чистый javascript:
document.getElementById("span id").className="";
или функцию toggleClass jquery:
$("element").toggleClass("highlight");
Кроме того, в лучших практиках говорится, что вам не следует использовать имена классов, подразумевающие стиль, например, выделение. Попробуйте вместо этого "подчеркнутый". : D
Улучшенный плагин развертывания:
$.fn.unwrap = function() {
this.parent(':not(body)')
.each(function(){
$(this).replaceWith( this.childNodes );
});
return this;
};
от Бена Алмана