Побег меньше и больше, чем в HTML

content = '5<x<div></div>'

В основном я ищу регулярное выражение, которое превратит строку, как указано выше, в 5&lt;x<div></div>

5x<div></div> все равно будет 5x<div></div>. Я просто пытаюсь избежать незакрытых тегов html

Если есть такая библиотека, то я буду очень рад ее использовать, если она соответствует моей основной цели - попытаться избежать незакрытых тегов html.

Ищите это: css-tricks.com/snippets/javascript/htmlentities-for-javascri‌​pt

adampweb 13.12.2020 10:36

Нет @AdamP., это не то, что я ищу. Это заменит все даже теги html. Он должен заменять только незакрытые HTML-теги, делая их фактическим знаком меньше или больше.

Dean Christian Armada 13.12.2020 10:38

Ну, мы все знаем о парсинге HTML с помощью регулярных выражений...

trincot 13.12.2020 10:54

Почему у вас вообще эта неоднозначная строка? Исправление неоднозначного синтаксиса постфактум по определению… сложно.

deceze 13.12.2020 10:55

Это требование. Первоначально я пытаюсь минимизировать HTML-коды в NuxtJS Static Generate, но это не удастся из-за того, что > и < действуют как незакрытый HTML-тег.

Dean Christian Armada 13.12.2020 10:58

Тогда «требование» несколько удалено от вменяемой реальности…

deceze 13.12.2020 10:59

Так что @deceze, это действительно так плохо :)

Dean Christian Armada 13.12.2020 11:00

Дайте мне ответ регулярного выражения, и я дам вам HTML-код, для которого он не сработает. Забудь это.

trincot 13.12.2020 11:00

Вы, конечно, не первый человек, который пытается минимизировать статический HTML-код NuxtJS. Я бы посоветовал вам найти причину недопустимого вывода вместо того, чтобы пытаться исправить это симптоматически.

idmean 13.12.2020 11:01

Ниже приведено хорошее решение, но я также попросил того, кто пишет эти требования, вручную использовать &lt; и &gt;

Dean Christian Armada 13.12.2020 12:54
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
10
637
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Перепишите каждый символ открытого тега "<" символом + уникальным значением... в данном случае ",,#*&,,"
  2. Разделить строку по уникальному значению
  3. Функция "replaceString()" проверяет, действительно ли переданное значение является тегом... присутствуют ли в строке оба символа "<" и ">". Если нет, перепишите символ с помощью «&lt;».
  4. Весь процесс повторяется для символа ">"

Это не самое красивое решение этой задачи, но оно работает.

var str = '5<x<div>s>7</div>';

for (var i = 0; i < 2; i++) {
    if (i === 0) {
        var str2 = str.replace(/</gi, ",,#*&,,<");
        var spl = str2.split(",,#*&,,");
    } else {
        var str2 = str.replace(/>/gi, ">,,#*&,,");
        var spl = str2.split(",,#*&,,");
    }
    replaceString(spl);
}

function replaceString(spl) {
    for (let i = 0; i < spl.length; i++) {
        if (spl[i].indexOf('<') > -1 && spl[i].indexOf('>') > -1) {
            //.......
        } else {
            if (spl[i].indexOf('<') > -1) {
                spl[i] = spl[i].replace(/</gi, "&lt;");
            }
            else if (spl[i].indexOf('>') > -1) {
                spl[i] = spl[i].replace(/>/gi, "&gt;");
            }
        }
    }
    str = spl.join('');
}

console.info(str);

Другие вопросы по теме