Замените теги разрыва другим набором тегов разрыва, используя регулярные выражения - PullRequest
0 голосов
/ 12 апреля 2019

Мне было интересно, есть ли способ в JavaScript заменить

<br><br /> 

метки только с

<br /> 

тег в строке с использованием регулярного выражения?

Вместо

"Hello world."<br><br />"The light is bright."<br><br />

Я бы хотел что-то вроде

"Hello world."<br />"The light is bright."<br />

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Использование DOM для этого является наиболее эффективным подходом.DOM гораздо лучше анализатор HTML, чем регулярное выражение

const str =  "Hello world.<br><br />The light is bright.<br><br />"

const div = document.createElement('div');
div.innerHTML = str;

const brs = div.getElementsByTagName('br');

for(let i = brs.length-1; i>=0; i--){
   var el = brs[i],
   prevSib = el.previousSibling;
   if(prevSib.tagName ==='BR'){
       el.remove()
   }  
}

console.log(div.innerHTML);
0 голосов
/ 12 апреля 2019

Я настоятельно рекомендую подход DOM от charlietfl , но вот параметр регулярности для полноты:

const html = '"Hello world."<br><br />"The light is bright."<br><br />';
const fixed = html.replace(/(<br\s*\/?>)+/gi, "<br />");
console.log(fixed);

Регулярное выражение находит прогоны <br> тегов, определенных как регистронезависимый <br, за которыми следует любое количество дополнительных пробелов, необязательный символ / изакрывающая скобка > и заменяет цикл одиночным самозакрывающимся <br />.

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