Нужно заменить все вхождения [br] в заголовках h1 на тег </br>. Пишу следующий код:
jQuery('h1').each(function() {
var text = jQuery(this).text();
text.replace(/\[br]/g, '</br>');
jQuery(this).text(text);
});
https://jsfiddle.net/cjq263ex/
Работать не хочет, хотя регулярное выражение, вроде, правильное.
В вашем коде есть ряд проблем:
Вы используете неправильное регулярное выражение. (На самом деле, вы забыли экранировать символ ].) Правильное регулярное выражение имеет вид:
/\[br\]/g
Вы не правильно осуществляете замену. Метод String.prototype.replace возвращает обновленную строку, а не проводит замены в текущей.
Метод jQuery.text экранирует все теги из переданной строки, заменяя управляющие символы HTML-сущностями. Вам нужно использовать метод jQuery.html
Тег br имеет вид <br /> а не </br> (обратите внимание на положение слеша). Ваш вариант не соответствует стандартам, хотя и должен работать в браузерах.
Таким образом, правильный код имеет вид:
jQuery('h1').each(function() {
var text = jQuery(this).text();
text = text.replace(/\[br\]/g, '<br />');
jQuery(this).html(text);
});
JSFiddle с работающим примером.
replace возвращает новую строку, не меняя текущую.
Этот метод не изменяет объект String, на котором он вызывается. Он просто возвращает новую строку.
нужно
jQuery(this).text(text.replace(/\[br\]/g, '</br>'));
как заметил @walik, если нужно вставить html вместо функции text нужно использовать html
jQuery(this).html(text.replace(/\[br\]/g, '</br>'))
Сборка персонального компьютера от Artline: умный выбор для современных пользователей