Удаление тегов из строки при их наличии
господа.
Нужна ваша помощь в решении небольшой проблемы, на которую гугл не смог дать мне ответа... Не исключаю, что я его не правильно спрашивал, но как спросить правильно, я хз...
В общем есть у меня регулярное выражение, которое вычищает строку от тегов хтмл:
let str = '<b>this is game</b>'
let newStr = str.replace(/<\/?[a-zA-Z]+>/gi,'')
console.log(newStr)
И это прекрасно работает ровно до тех пор, пока в выражение не попадает строка без тегов:
let str = 'this is game'
let newStr = str.replace(/<\/?[a-zA-Z]+>/gi,'')
console.log(newStr)
Итак, мой вопрос: можно ли как-то переделать регулярное выражение, чтобы оно не выпадало в ошибку, если в строке нет тегов?
Грубо говоря, если в выражение попала строка с тегами, то их нужно удалить, а если тегов нет, то ничего не делать и оставить строку как есть...
Ответы (1 шт):
Ваша регулярка много чего не найдёт. Например, если в теге будет пробел или атрибуты. Лучше доверьте эту работу парсеру браузера:
function fNoTag(rawStr) {
let fake = document.createElement('div');
fake.insertAdjacentHTML('afterbegin', rawStr);
return fake.textContent;
}
console.log(fNoTag('<b>this is game</b>'));
console.log(fNoTag('<b >this is game</ b>'));
console.log(fNoTag('<b class="bold">this is game</b>'));
console.log(fNoTag('<b>this is game'));
console.log(fNoTag('this is game</b>'));
console.log(fNoTag('this is game'));