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

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

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

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

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

🤔 А знаете ли вы, что...
С JavaScript можно создавать расширения для различных платформ, таких как Adobe Acrobat и Microsoft Office.


4
637
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);