Как удалить указанный тег c HTML (и его содержимое)? - PullRequest
0 голосов
/ 27 марта 2020

Я не могу найти правильное ключевое слово. У меня есть эта строка:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

<table border="2" cellpadding="5" cellspacing="0" style="width: 490px;">
    <tr>
        <th>Company</th>
        <th>Contact</th>
        <th>Country</th>
    </tr>
    <tr>
        <td>Alfreds Futterkiste</td>
        <td>Maria Anders</td>
        <td>Germany</td>
    </tr>
</table>

Duis consequat varius aliquam. In hac habitasse platea dictumst.

<table border="2" cellpadding="5" cellspacing="0" style="width: 490px;">
    <tr>
        <th>Company</th>
        <th>Contact</th>
        <th>Country</th>
    </tr>
    <tr>
        <td>Alfreds Futterkiste</td>
        <td>Maria Anders</td>
        <td>Germany</td>
    </tr>
</table>

Что я хочу:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Duis consequat varius aliquam. In hac habitasse platea dictumst.

Моя попытка:

<table(.*)[^>]*>.*?

enter image description here

ссылка RegExr .

Это сценарий, использующий perl, который я создам для удаления тегов таблицы из указанного поля таблицы c дБ. Сначала я нацелился на тег таблицы и заменил их пустым с помощью perl.

Ответы [ 2 ]

1 голос
/ 28 марта 2020

Не тратьте слишком много времени на регулярные выражения. Вы можете просто выбрать table s и их содержимое и удалить их из фактической строки.

Используйте следующее регулярное выражение, чтобы сначала выбрать таблицы: <table.*>[\w\W]*?<\/table>. Детская площадка .

Затем используйте string.replace (или что-то подобное), чтобы удалить таблицы ...

Демонстрация:

const contentWrapper = document.getElementById('demo-content');
const content = contentWrapper.innerHTML;
contentWrapper.innerHTML = ''; // no need to display the HTML content here
const html = content.replace(/<table.*>[\w\W]*?<\/table>/g, '');
console.log(html)
<div id="demo-content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.

<table border="2" cellpadding="5" cellspacing="0" style="width: 490px;">
    <tr>
        <th>Company</th>
        <th>Contact</th>
        <th>Country</th>
    </tr>
    <tr>
        <td>Alfreds Futterkiste</td>
        <td>Maria Anders</td>
        <td>Germany</td>
    </tr>
</table>

Duis consequat varius aliquam. In hac habitasse platea dictumst.

<table border="2" cellpadding="5" cellspacing="0" style="width: 490px;">
    <tr>
        <th>Company</th>
        <th>Contact</th>
        <th>Country</th>
    </tr>
    <tr>
        <td>Alfreds Futterkiste</td>
        <td>Maria Anders</td>
        <td>Germany</td>
    </tr>
</table>
</div>
1 голос
/ 27 марта 2020

Я не уверен, что вы пытаетесь сделать, вы говорите, что хотите соответствовать Lorem Ipsum, но ваше регулярное выражение соответствует тегам HTML ...

В любом случае, вот некоторые регулярное выражение:

  • Для соответствия <table>...</table>:
/<(table)[\s\S]*?<\/\1>/g
  • Для соответствия частям Lorem Ipsum (или любой строке, не начинающейся с < ):
/(?<=^|[\n\r])[^<\s].*(?=$|[\n\r])/g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...