Как удалить самую внешнюю пару тегов элементов XML, используя Javascript? - PullRequest
0 голосов
/ 05 августа 2020

Если у меня есть строка:

 <p> Abcdefg <note> abcdefg <p> abcdefg </p> <p> abcdefg </p> </note> </p>

, я хочу удалить самую внешнюю пару, в данном случае первую

и последнюю

, из строки в Javascript, например что результатом будет строка:
 Abcdefg <note> abcdefg <p> abcdefg </p> <p> abcdefg </p> </note> 

Как мне это сделать? Я пробовал использовать Regex и Jquery, но я не могу сделать это таким образом, чтобы другие внутренние

и

не удалялись.

Спасибо.

Ответы [ 3 ]

1 голос
/ 05 августа 2020

Внутри тега p допустимо только содержимое фразы.

Доступное содержимое фразы

Давайте рассмотрим наличие действительного html

var str = ' <p> Abcdefg <span> abcdefg <span> abcdefg </span> <span> abcdefg </span> </span> </p>'

var res = $(str).html()

console.log(res)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Использование регулярного выражения

var str = '<p> Abcdefg <note> abcdefg <p> abcdefg </p> <p> abcdefg </p> </note> </p>'

var res = str.replace(/\<(.*?)\>(.*)\<\/(\1)\>/g, '$2')

console.log(res)
0 голосов
/ 05 августа 2020

function remove_tag(text, tag) {
  const regex = new RegExp(`^<${tag}>|</${tag}>$`, 'g');
  return text.replace(regex, "").trim();
}

let text = "<p> Abcdefg <note> abcdefg <p> abcdefg </p> <p> abcdefg </p> </note> </p>";
const result = remove_tag(text, "p");
console.log(result);
0 голосов
/ 05 августа 2020

Здесь :

const regex = /<(?<tag>\w+)>(?<content>.*)<\/\k<tag>>/;

const str = '<p> Abcdefg <note> abcdefg <p> abcdefg </p> <p> abcdefg </p> </note> </p>';

const result = str.replace(regex, '$2');

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...